給定整數exp和0<=sig<2^52,我如何創建exp指數為 float64 且其有效位與(在 Go 中)的二進制表示相同的sig?
1 回答

烙印99
TA貢獻1829條經驗 獲得超13個贊
IEEE?-754 標準定義了 Go 用于浮點數的浮點算法,例如float32
and?float64
(就像幾乎所有其他語言一樣)。
由于您的有效數字可能高達 52 位,顯然它只能使用一個float64
值來表示。
這是一個值的位圖float64
(取自維基百科):
你聲稱你有指數值和尾數(這是小數部分)。
您可以使用簡單的按位運算來構造浮點的 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.分數
- 1 回答
- 0 關注
- 155 瀏覽
添加回答
舉報
0/150
提交
取消