爲什麼下面的代碼和C中的代碼一樣?IEEE 754:它究竟如何工作?
float x = 2147483647; //2^31
printf("%f\n", x); //Outputs 2147483648
這裏是我的思維過程:
2147483647 = 0 1001 1101 1111 1111 1111 1111 1111 111
(0.11111111111111111111111)base2 = (1-(0.5)^23)base10
=> (1.11111111111111111111111)base2 = (1 + 1-(0.5)^23)base10 = (1.99999988)base10
因此,對IEEE轉換754記號回十進制:1.99999988 * 2^30 = 2147483520
所以從技術上來說,C程序必須打印出來2147483520,右?