C語言整型數和實型數最在的區別在於編碼方式上。
1、整型數一般使用原碼、反碼、補碼三種編碼方式。
原碼:即用第一位表示符號, 其餘位表示值. 比如如果是8位二進制:
1的原碼=0000 0001 //最左側的最高位是符號位,0表示正數
-1的原碼=1000 0001 //最左側的最高位1表示負數
反碼:即在原碼的基礎上符號位不變,其它各位求反。
-1的反碼=1111 1110 //注意符號位不變
補碼:即在反碼的基礎上,再加1
-1的補碼=1111 1111
2、實數型一般使用的是IEEE754編碼方式。IEEE754中規定了實數符號位、指數位和尾數位,即有效數字位所佔的二進制位數,具體如下:
格式 長度 符號位 指數位 尾數位 有效位數 指數偏移 尾數説明
單精度 32 1 8 23 24 127 有一位隱含位
雙精度 64 1 11 52 53 1023 有一位隱含位
擴展雙精度 80 1 15 64 64 16383 沒有隱含位
注意:擴展雙精度格式沒有隱含位,因此它的有效位數與尾數位數一致,而單精度和雙精度格式均有一位隱含位,因此它們的有效位數比尾數位數多1。