big和little endian浮点之间的区别是什么
What is the difference between big and little endian floats?
对于整数值,小端和大端表示的差异非常简单。
但我不清楚小端浮点和大端浮点的区别。
最后,我想知道哪一种更常用。
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/
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 在 const 函数中通过引用和指针返回之间的区别
- 我想知道长双倍和双倍之间的区别
- 这 4 个 lambda 表达式之间有什么区别?
- 结构体 S { int align; } 之间的区别;(struct 关键字后的名称)和 struct { int al
- (double) 和 double() 之间的区别
- & 和 * 之间的区别
- std::is_convertible 和 std::convertible_to 之间的区别(在实践中)?
- 析构函数和'delete'之间的区别
- 在 typedef 内部使用 const 关键字和在 typedef 外部使用 const 关键字之间有区别吗?
- 从预序遍历构造 bst 的 c++ 和 python 解决方案之间的区别
- vector.back() 和 vector[vector.size() - 1] 之间的区别?
- 空指针常量 (nullptr)、空指针值和空成员指针值之间有什么区别?
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- OpenMP #pragma omp for v/s #pragma omp parallel for 之间的区别?
- S() 与 S{} 之间的区别?