如何用位运算符将无符号整数的最高有效字节置为全1?
解决方案
要将无符号整数 unsigned int x = 0x87654321 的最高有效字节置为全1,只需使用**按位或(|)**运算符配合对应掩码即可:
unsigned int x = 0x87654321; x = x | 0xFF000000; // 执行后x的值为0xFF654321
原理说明
- 掩码
0xFF000000的二进制形式是最高8位全为1,其余24位全为0。 - 按位或操作的规则是:对应位只要有一个为1,结果位就为1;仅当两个位都为0时,结果位才为0。用这个掩码和原数做或操作,会强制把原数的最高8位设为1,剩下的24位则保留原数的原始值。
也可以用更简洁的复合赋值写法:
x |= 0xFF000000;
注:以上方法针对32位的unsigned int类型设计,若目标平台的unsigned int为64位,只需将掩码调整为0xFF00000000000000即可。
内容的提问来源于stack exchange,提问作者Zolak
相关产品推荐
相关产品推荐

