回答
一些消息來源稱IEEE754浮點數總是存儲爲小端,但浮點數的IEEE754規範根本不包含字節序問題,並且可能因機器而異。 這裏是浮點/字節陣列轉換的示例代碼:
#include <stdio.h>
int main(int argc, char** argv){
char *a;
float f = 3.14159; // number to start with
a = (char *)&f; // point a to f's location
// print float & byte array as hex
printf("float: %f\n", f);
printf("byte array: %hhX:%hhX:%hhX:%hhX\n", \
a[0], a[1], a[2], a[3]);
// toggle the sign of f -- using the byte array
a[3] = ((unsigned int)a[3])^128;
//print the numbers again
printf("float: %f\n", f);
printf("byte array: %hhX:%hhX:%hhX:%hhX\n", \
a[0], a[1], a[2], a[3]);
return 0;
}
這是一個小印機器上的輸出:
浮動:3.141590 字節數組:D0:F:49:40 浮動: -3.141590 字節數組:D0:F:49:C0
理論上,在一個big-endian機器上,字節順序將顛倒。
參考: http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/
在SPARC機器上:float:3.141590,字節數組:40:49:F:D0; float:3.141560,字節數組:40:49:F:50 – automatthias 2012-03-29 11:49:09
這正是如何實現它! – Owl 2016-07-29 09:05:46
Endianness只是構成由多個字節組成的值的字節的屬性。由於浮點數佔用4或8字節,所以endianness會告訴您按照何種順序讀取它們。這與正好與整數值相同。
- 1. 頁面大小和頁面表項大小有什麼區別
- 2. 大O和大Omega有什麼區別?
- 3. 硬浮點數和軟浮點數之間有什麼區別?
- 4. 使用遊戲開始和遊戲運行有什麼區別?
- 5. [游泳池釋放]和[游泳池排水]有什麼區別?
- 6. 在PL/SQL中,遊標和參考遊標有什麼區別?
- 7. 使用物化時有什麼區別?
- 8. 有什麼區別`和$(Bash中有什麼區別?
- 9. ==和===有什麼區別?
- 10. ==和===有什麼區別?
- 11. 有什麼區別? :和||
- 12. ==和===有什麼區別?
- 13. '=='和'==='有什麼區別?
- 14. `&`和`ref`有什麼區別?
- 15. 有什麼區別:。!和:r!?
- 16. | 0和~~有什麼區別?
- 17. Appender和〜有什麼區別?
- 18. 區域設置和編碼(終端)有什麼區別
- 19. 爲什麼區分大小寫和不區分大小寫?
- 20. solr PHP客戶端有什麼區別?
- 21. 點對點和端到端安全性有什麼區別?
- 22. UDP端點和UDP客戶端有什麼區別?
- 23. 浮點合併和整數合併有什麼區別?
- 24. iPhone遊戲開發時使用CALayer和UIView有什麼區別?
- 25. 全屏形式和視頻遊戲有什麼區別?
- 26. Web服務器和遊戲服務器有什麼區別?
- 27. Windows遊戲庫和類庫之間有什麼區別?
- 28. xtype和別名有什麼區別?
- 29. mongoengine中的物體和過濾器有什麼區別?
- 30. 物體的形狀和結構有什麼區別?
字節序影響值在存儲器表示爲_all_多字節類型的方式。在這種情況下,浮點數與32位整數沒有區別。 – 2012-01-29 20:19:08
這4個字節只是以相反的順序存儲。 – 2012-01-29 20:58:06
讓我感到困惑的是浮點表示不是以字節爲單位(如整數)。符號是1位,指數8位,有效位數是23.反轉順序只會讓訪問值變得更難。 – 2012-01-29 21:07:56