是否存在無法用雙精度浮點型表示的無符號64位整數值? (由於雙64位也一定有一些。)如果是這樣,我怎樣才能計算出全部是? (?在不蠻力方式,也許)無法映射到雙精度型的無符號64位整數
0
A
回答
1
從0到2^52(含)的每個整數都可精確表示,從2^52到2^53只有每個偶數整數(最低有效0位),然後是每個第四個整數,最高可達2^64-2^12。
我們可以用一個比特的代碼一概而論,
取M = 52:
for (i=0; i<(64-m+1); i++) {
start = i ? 1ULL << (i+m) : 0;
end = ((1ULL << m+1)-1) << i;
step = 1ULL << i;
}
生產:
0000000000000000 to 001fffffffffffff step 1
0020000000000000 to 003ffffffffffffe step 2
0040000000000000 to 007ffffffffffffc step 4
0080000000000000 to 00fffffffffffff8 step 8
0100000000000000 to 01fffffffffffff0 step 16
0200000000000000 to 03ffffffffffffe0 step 32
0400000000000000 to 07ffffffffffffc0 step 64
0800000000000000 to 0fffffffffffff80 step 128
1000000000000000 to 1fffffffffffff00 step 256
2000000000000000 to 3ffffffffffffe00 step 512
4000000000000000 to 7ffffffffffffc00 step 1024
8000000000000000 to fffffffffffff800 step 2048
實施例:
分配0x0020000000000000到雙給出9007199254740992.0(IEEE754中的0x0x4340000000000000)
分配0x0020000000000001到雙給出9007199254740992.0(相同值)
分配0x0020000000000002到雙給出9007199254740994.0(0x0x4340000000000001,這是下一個可表示值)
0
如果一個64位的數表示爲如下:
52 A個比特,隨後至少1乙位,接着是單個「1」比特。
其中A是任意位,且其中一個B位必須非零,則不能將其表示爲雙精度型。 (我依靠的位是用於雙倍的方式,如http://en.wikipedia.org/wiki/Double-precision_floating-point_format所示)
1
雙具有尾數的53位,所以任何具有53個連續有效位的無符號64位整數(即,從前1位到最後1位的長度爲53位或更少)可以無損地轉換爲雙精度。
相關問題
- 1. 無符號16位和64位整數
- 2. pymongo 64位無符號整數
- 3. Clojure無符號64位整數
- 4. 指定64位數據模型上的64位無符號整數文字
- 5. 算法使用32位無符號整數乘64位數
- 6. C中無符號雙精度?
- 7. 將雙精度值映射到顏色
- 8. 錯誤:從「字符*」到「無符號整數」鑄損失精度
- 9. 在Visual Studio中將字節數組中的64位雙精度型轉換爲80位雙精度型
- 10. C++:在一個有符號的64位整數中的兩個無符號64位整數的差異
- 11. HDF5寫出32位無符號整數到磁盤上的64位,並讀入32位無符號int
- 12. 64位無符號減法,問題
- 13. NSDecimalNumber和大的無符號long long(64位)整數
- 14. 薩姆的兩個64位無符號整數QtSpim
- 15. 位移爲32個64的無符號整數
- 16. 無法將雙精度轉換爲雙精度
- 17. 爲什麼「無符號」映射到MSVC C++中的32位?
- 18. Java整數/雙無符號字節
- 19. 從二進制文件讀取無符號整數64位
- 20. JSON編碼無符號64位整數在PHP中
- 21. C++跨平臺方式來定義64位無符號整數
- 22. C#無符號整型96位
- 23. 從無符號長整型轉換爲無符號整型
- 24. 將無符號字節映射到Java類型(JNI)
- 25. 由於雙主鍵無法映射ForeignKey
- 26. 無符號整型到帶有Python的帶符號浮點數
- 27. Javascript中的無符號32位整數
- 28. 無符號整數的反向位
- 29. Java - 雙精度和整數
- 30. 無符號整數位字段移產量符號整數
由於指數是偏移量爲1023的偏移量,是不是會移動可表示整數的閾值?像從偶數和奇數切換一樣? – aggsol
指數偏差僅對1.0以上和1.0以下的範圍有所不同,但經過測試後,我發現我的答案已經關閉了一些,所以我已經糾正了它。 – matja