回答
一些消息来源称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