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

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

從指數和尾數創建浮點數

從指數和尾數創建浮點數

Go
函數式編程 2023-05-08 15:56:25
給定整數exp和0<=sig<2^52,我如何創建exp指數為 float64 且其有效位與(在 Go 中)的二進制表示相同的sig?
查看完整描述

1 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

IEEE?-754 標準定義了 Go 用于浮點數的浮點算法,例如float32and?float64(就像幾乎所有其他語言一樣)。

由于您的有效數字可能高達 52 位,顯然它只能使用一個float64值來表示。

雙精度浮點格式float64中描述了值的內存布局(位)。

這是一個值的位圖float64(取自維基百科):

http://img3.sycdn.imooc.com/6458ab460001dfa606120122.jpg

你聲稱你有指數值和尾數(這是小數部分)。

您可以使用簡單的按位運算來構造浮點的 64 位值,如下所示:

bits?:=?exp<<52?|?sig

(注意:exp并且sig應該是類型uint64。如果不是,請使用類型轉換。)

一旦你有了這些位,你就可以使用math.Float64frombits()函數將它作為一個float64值來獲?。?/p>

f?:=?math.Float64frombits(bits)

請注意,內存布局的指數值不是您在計算數字值時必須使用的“直接”數字,而是:

雙精度二進制浮點數指數采用偏移二進制表示法編碼,零偏移為1023;在 IEEE 754 標準中也稱為指數偏差。

因此,以上述雙精度格式編碼的數字計算如下:

(-1)符號x 2?e-1023?x 1.分數


查看完整回答
反對 回復 2023-05-08
  • 1 回答
  • 0 關注
  • 155 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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