不同数据类型的二进制格式
The binary format for different data types
unsigned long long
类型的确切二进制格式是什么(至少在visual studio中是这样)。
我正在用别名指针进行一些逐位操作,我通过对unsigned char
指针的操作来设置位,然后对unsigned long long
指针(别名)进行一些其他操作。
unsigned long long
的格式看起来很奇怪,正因为如此,它把结果搞砸了,而且,比特移位操作似乎也表现得很奇怪:
根据位掩码测试,该数据似乎是从right: LSB->MSB : left
排列的,这意味着>>移位将把数据带到其更有效的位,而不是更低的位,这是正确的吗?
编译器为ICC 13.0,操作系统为windows 7-64。
您描述的字节布局是little-endian,这是英特尔处理器通常使用的布局。位偏移不取决于数字的内存布局,而是取决于值,因此字节序不应该影响操作的值。然而,如果您使用指针别名,例如强制转换为char *
并使用指针算术提取其中的分段,您将获得依赖于端序的行为,而在小端序Intel处理器上,这种行为可能不是您所期望的。
相关文章:
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 如何将 numpy 二维数组作为一种可以用C++读取的二进制格式存储在磁盘上
- C++ 如何以二进制格式表示字符串?
- 以二进制格式读取类
- 将 ASCII 文件转换为 C++ 的二进制格式
- qDebug - 如何以位(二进制格式)输出数据
- 以二进制格式写文件
- 以二进制格式写入 vtk 文件
- C++ fstream - 无法使用二进制格式从文件中读取
- Windows和linux中使用的可执行二进制格式的低级解释
- 在二进制格式的xml文件中查找关键字
- 是否有预定义的内置函数将数字转换为C++二进制格式
- C ++如何以二进制格式输出Ply文件
- 如何从C++文件中读取二进制格式的 IP 地址
- 如果可以用IEEE 754中的二进制格式表示,那么硬编码浮点精确吗
- 如何在c++中以二进制格式打包数据
- 访问基于二进制格式文档的特定二进制信息
- 使用Boost/ c++以二进制格式序列化对象的首选方式
- 如何读取Visio二进制格式(.vsd)
- NodeJ 以丑陋的二进制格式接收 UDP 数字