亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

IEEE 754浮點數標準中64位浮點數為什么指數偏移量是1023?

IEEE 754浮點數標準中64位浮點數為什么指數偏移量是1023?

白豬掌柜的 2018-10-24 09:09:43
這個值是怎么得出來的?有什么數學依據嗎?
查看完整描述

1 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

如果你知道為什么32位浮點數的指數偏移量是127,你就能知道為什么64位浮點數的指數偏移量是1023。

在32位浮點數中,指數位有8位,它能表示的數字是從0到2的8次方,也就是256。但是指數有正有負,所以我們需要把256這個數字從中間劈開,一半表示正數,一半表示負數,所以就是-128到+128。哦,不對,忘記了中間還有個0,所以只能表示-128到127這256個數字。那么怎么記錄負數呢?一種作法是把高位置1,這樣我們只要看到高位是1的就知道是負數了,所謂高位置1就是說把0到255這么多個數字劈成兩半,從0到127表示正數,從128到255表示負數。但是這種作法會帶來一個問題:當你比較兩個數的時候,比如130和30,誰更大呢?機器會覺得130更大,但實際上130是個負數,它應該比30小才對啊。所以為了解決這個麻煩,人們發明了另外一種方法:干脆把所有數字都給它加上128得了,這樣-128加上128就變成了0,而127加上128變成了255,這樣的話,再比較大小,就不存在負數比正數大的情況了。

但是我要得到原來的數字怎么辦呢?這好辦,你只要再把指數減去128就得到了原來的數字,不是嗎?比如說你讀到0,那么減去128,就得到了負指數-128,讀到255,減去128,就得到了127。

那為什么指數偏移是127,不是128呢?因為人們為了特殊用處,不允許使用0和255這兩個數字表示指數,少了2個數字,自然就只好采用127了。

同理,64位浮點數,指數位有11位之多,2的11次方是2048,劈一半作偏移,可不就是1024嗎?同理,去掉0和2048這兩個數字,所以就用1023作偏移了。

80位擴展雙精度,一個道理。


查看完整回答
2 反對 回復 2018-10-24
  • 1 回答
  • 0 關注
  • 2729 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號