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。
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。