c++语句 (((j>>(i-1))^1)==(k>>(i-1))) 是什么意思? 在线等

2025-05-12 20:44:20
推荐回答(5个)
回答1:

这整个是一个由关系操作符"=="连接起来的复合表达式,
是判断左边与右边的表达式的值是否相等,相等则整个表达式的值为 true, 不等则是false,
左边的表达式:(j>>(i-1))^1 ---> j 右移 (i-1) 位 之后与1 按位异或.
右边的表达式:k>>(i-1) ---> k右移(i-1)位

回答2:

分别说明:
>>是算术右移。例如1>>1得到2
^是异或。1^1=0,0^1=1,即与1异或等价于取反
==是判断左右两边是否相同

这三个明白,整体就明白了。

回答3:

这是个比较操作
j右移(i-1)位,再与1按位做异或操作,得出的值与k右移(i-1)位得出的值进行比较。

回答4:

j大于i减1的1次方等于k大于i减1.

回答5:

j左移i-1的1次幂 = k右移i-1位