big和little endian浮点之间的区别是什么

What is the difference between big and little endian floats?

本文关键字:之间 区别 是什么 little endian big      更新时间:2023-10-16

对于整数值,小端和大端表示的差异非常简单。

但我不清楚小端浮点和大端浮点的区别。

最后,我想知道哪一种更常用。

Endianness只是字节的一个属性,这些字节组成了一个由多个字节组成的值。由于浮点数占用4或8个字节,endianness告诉您读取它们的顺序。这与整数值完全相同。

一些消息来源说,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: %fn", f);
  printf("byte array: %hhX:%hhX:%hhX:%hhXn", 
    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: %fn", f);
  printf("byte array: %hhX:%hhX:%hhX:%hhXn", 
    a[0], a[1], a[2], a[3]);
  return 0;
}

它是在一台印度小机器上输出的:

浮动:3.141590字节数组:D0:F:49:40浮子:-3.141590字节数组:D0:F:49:C0

从理论上讲,在大端序机器上,字节的顺序会颠倒。

参考:http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/