0

一种类型的确切二进制格式是什么unsigned long long(至少在 Visual Studio 中)。

我正在使用别名指针进行一些按位操作,我通过对指针的操作设置位,然后对指针(别名)unsigned char进行一些其他操作。unsigned long long

的格式unsigned long long看起来很奇怪,因此,它弄乱了结果,而且,移位操作似乎也表现得很奇怪:

从位掩码测试看来,这些数据是从 排列的right: LSB->MSB : left,这意味着 >> 移位会将数据带到其更高的有效位而不是更少的位,这是正确的吗?

编译器为 ICC 13.0,操作系统为 windows 7-64。

4

1 回答 1

2

您描述的字节布局是小端,这是英特尔处理器通常使用的布局。位移不取决于数字的内存布局,而是取决于值,因此字节顺序不应影响操作的值。但是,如果您使用指针别名,例如强制转换为 achar *并使用指针算法来提取它的段,您将获得与字节序相关的行为,在小字节序英特尔处理器上,这可能不是您所期望的。

于 2013-02-19T05:35:54.207 回答