You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

右移unsigned char后,如何通过位操作将最高位设为1?

位操作实现01000000转11000000

你需要将01000000(十进制64)修改为11000000(十进制192),核心是把最高位(第7位,从0开始计数)置为1,同时保留其他位的原有值,用**位或运算符(|)**就能轻松实现:

方法1:直接用数值掩码

unsigned char myBits = 128; // 10000000 in binary
myBits = myBits >> 1; // 右移后为64,二进制01000000
myBits = myBits | 128; // 位或128(二进制10000000),结果为192(11000000)

方法2:用十六进制掩码(可读性更强)

十六进制0x80对应二进制10000000,和上面的128等价:

myBits = myBits | 0x80;

方法3:用移位生成掩码(更直观)

通过1 << 7生成最高位为1的掩码,不用硬记具体数值:

myBits = myBits | (1 << 7);

原理:位或操作的规则是「只要对应位有一个1,结果位就是1」,所以用最高位为1、其他位为0的掩码和原数值进行或操作,只会把原数值的最高位设为1,其他位保持不变。

内容的提问来源于stack exchange,提问作者nalabof679

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:25:24