修订问题 -
如何计算掩码位而不管整数类型的大小? 我想计算前4位的掩码,当我不是整数的大小时。
我有两个选项可以在代码中设置MSB 4位 -
如果little_Endian -
然后 -
int t = 54342;
int k = t<<4;
int t = (k>>4)|0XF000
其他大Endian - 然后 -
int t = 54342;
int k = t>>4;
int t = (k<<4)|0X000F
我的问题是有没有更好的方法。如何使代码独立于字节顺序?我可以使用union来确定字节序。但是,我希望我的代码很简单。我怎么能这样做?
答案 0 :(得分:2)
Endianess用于解释字节存储在内存中的方式。如果你在没有任何指针操作的情况下直接引用变量,它就没有规定如何访问字节。
这意味着,无论平台的endianess
如何,以下程序都会产生相同的结果。
int main(void)
{
int num = 0xDEADBEEF;
int mask = 0xF0000000;
printf("SET = %X\n", (unsigned int) (num | mask));
return 0;
}