回答
一些消息來源稱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. sc.parallelize(data,partitions)中的rdd.repartition()和分區大小有什麼區別
- 4. 硬浮點數和軟浮點數之間有什麼區別?
- 5. 使用遊戲開始和遊戲運行有什麼區別?
- 6. [游泳池釋放]和[游泳池排水]有什麼區別?
- 7. 在PL/SQL中,遊標和參考遊標有什麼區別?
- 8. 在android xml中小寫和大寫「視圖」有什麼區別?
- 9. opencv中調整大小和pryDown/pryUp有什麼區別?
- 10. 小內存模式和大內存模式有什麼區別?
- 11. 使用物化時有什麼區別?
- 12. 有什麼區別`和$(Bash中有什麼區別?
- 13. 有什麼區別? :和||
- 14. &&和||有什麼區別?
- 15. 「/」和「/ *」有什麼區別?
- 16. 有什麼區別:。!和:r!?
- 17. ==和===有什麼區別?
- 18. Appender和〜有什麼區別?
- 19. $ @和$ *有什麼區別?
- 20. is和=有什麼區別?
- 21. #.00和#。##有什麼區別?
- 22. `==`和`is`有什麼區別?
- 23. '=='和'==='有什麼區別?
- 24. /和/#/有什麼區別?
- 25. | 0和~~有什麼區別?
- 26. `&`和`ref`有什麼區別?
- 27. ==和===有什麼區別?
- 28. ==和===有什麼區別?
- 29. `{}`和`[]`有什麼區別?
- 30. JavaScript和=== ===有什麼區別?
字節序影響值在存儲器表示爲_all_多字節類型的方式。在這種情況下,浮點數與32位整數沒有區別。 – 2012-01-29 20:19:08
這4個字節只是以相反的順序存儲。 – 2012-01-29 20:58:06
讓我感到困惑的是浮點表示不是以字節爲單位(如整數)。符號是1位,指數8位,有效位數是23.反轉順序只會讓訪問值變得更難。 – 2012-01-29 21:07:56