首頁>
5
回覆列表
  • 1 # 自若星球7W

    浮點數存儲普遍使用IEEE標準.

    首先要看是單精度float還是雙精度double

    此處假設為單精度,雙精度類似

    對float,共32位,從高位到低位分別為1位的符號位,8位階碼,23位尾數

    246.15為正數,符號位為0.

    246.15包含整數部分 246;小數部分0.15;

    整數部分直接轉換為2進制形式:11110110b;

    小數部分具體轉換比較麻煩,我給你說下我的算法:

    0.15

    1:2*0.15 = 0.3 ,0.3<1 第一位為0

    2:2*0.3 = 0.6 ,0.6<1 第二位為0

    3:2*0.6 = 1.2 ,1.2>1 第三位為1,此時要把1.2 =1.2 - 1

    4:2*0.2 = 0.4 ,第四位為0,原理同上

    5:2*0.4 = 0.8 ,第五位為0

    6:2*0.8 = 1.6 ,第六位為1

    7:2*0.6 = 1.2 ,第七位為1

    8:2*0.2 = 0.4 ,第八位為0,後面的就是循環了,看第5-8步

    加上整數位算夠24位 ,不夠24位用0補夠,此處小數位算16位, 算出來的結果應該為0010 0110 0110 0110b;

    此時便可轉換246.15為二進制形式11110110.0010 0110 0110 0110

    也可表示成1.111 0110 0010 0110 0110 0110b * 2^7;

    注意指數為7,解碼為8位2進制數,此數即可表示正也可表示負,約定把指數+(2^7-1)作為階碼

    就是 7 +(2^7-1) = 134 = 10000110b作為階碼

    科學計數法第一位都為1,在IEEE標準中可以省略

    此時就得出了246.15的IEEE形式:

    符號位 0b

    階碼 10000110b

    尾數 111 0110 0010 0110 0110 0110b

    組合起來就是 0 10000110 111 0110 0010 0110 0110 0110b

    轉為16進製為 0x43762666;

    當然一般情況下是不需要進行手動的轉換的

  • 蘿蔔絲粉條餡餅的做法?