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

如何用纯位运算判断8位x的偶数位全为1并设置y的值

问题解答

核心思路

要判断8位变量x的所有偶数位(bit0、bit2、bit4、bit6)是否全为1,可基于补码特性推导:

  • 当x的偶数位全为1时,其补码p = ~x + 1的偶数位中仅bit0为1,bit2、bit4、bit6均为0;
  • 若x存在任意偶数位不为1,则p的偶数位要么bit0为0,要么bit2/bit4/bit6至少有一个为1。

利用已定义的移位变量a=p>>2、b=p>>4、c=p>>6,可直接提取p的bit2、bit4、bit6(分别对应a、b、c的bit0),结合p的bit0即可完成判断。

填充后的完整代码

p = ~x + 1
a = p >> 2
b = p >> 4
c = p >> 6
d = p >> 8
y = !(((a | b | c) & 1) | !(p & 1))

运算次数验证

上述y的计算共使用7次运算(a|b、|c、&1、p&1、!、|、!),加上前面的4次赋值运算,总次数为11次,符合最多12次运算的限制。

逻辑验证

  • 当x的偶数位全1时:(a|b|c)&1为0(bit2/bit4/bit6均为0),p&1为1(bit0为1),!(p&1)为0,最终!((0)|(0))=1,y=1;
  • 当x存在偶数位不为1时:要么p&1为0(bit0不为1),要么(a|b|c)&1为1(bit2/bit4/bit6至少一个不为0),最终!((1)|(0))或!((0)|(1))或!((1)|(1))均为0,y=0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:40:34