回覆列表
  • 1 # 使用者2681768447859

    首先 浮點數2.5寫成二進位制應該為10.1(其中整數部分10b=2d, 小數部分0.1*2=1所以0.1b為0.5d)。

    然後要把10.1規格化(寫成1.xxxx * 2^n的形式,有點像科學計數法)得到1.01*2^1(其中2^1中的1為階碼, 1.01為有效數字)

    加上2.5為正數,這就得到三部分資訊:

    1. 有效數字為1.01.

    2. 階碼為1.

    3. 符點數為正數

    而c/c++的float型別結構為:

    1. 最低的23位記錄規格化小數中的有效數字(但是不儲存最前面的1)

    2. 之後的8位記錄階碼(上面的階碼轉換到這裡要+127)

    3. 最高的一位表示正負數(0為正數,1為負數)

    最終得到的二進位制數為:

    高位 低位

    0 10000000 01000000000000000000000

    整理得:

    0100 0000 0010 0000 0000 0000 0000 0000

    轉到16進製得:

    40200000

    注意:0 無窮大 在符點數里比較特殊另外處理(我也不太明白-_-!)

  • 中秋節和大豐收的關聯?
  • 大宋才女李清照是如何寫“七夕”的?