【发布时间】:2013-02-19 05:30:21
【问题描述】:
unsigned long long 类型的确切二进制格式是什么(至少在 Visual Studio 中)。
我正在使用别名指针进行一些按位操作,我通过对 unsigned char 指针的操作设置位,然后对 unsigned long long 指针(别名)进行一些其他操作。
unsigned long long 的格式看起来很奇怪,因此它弄乱了结果,而且位移操作似乎也表现得很奇怪:
从位掩码测试看来,这些数据是从right: LSB->MSB : left 排列的,这意味着>> 移位会将数据带到其更高的有效位而不是更少的位,这是正确的吗?
编译器为ICC 13.0,操作系统为windows 7-64。
【问题讨论】:
-
也许对endianness的解释是有序的。
-
您是否有可能通过指针欺骗(转换为
char*)来提取单个字节?在这种情况下,您的困惑可能来自字节顺序问题。 -
我使用 unsigned char * 设置位和别名指针来处理其他数学运算,它似乎把事情搞砸了。