不同数据类型的二进制格式

The binary format for different data types

本文关键字:二进制 格式 数据类型      更新时间:2023-10-16

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处理器上,这种行为可能不是您所期望的。