作业帮 > 综合 > 作业

c++语句 (((j>>(i-1))^1)==(k>>(i-1)))

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/18 22:12:00
c++语句 (((j>>(i-1))^1)==(k>>(i-1)))
c++语句 (((j>>(i-1))^1)==(k>>(i-1)))
这整个是一个由关系操作符"=="连接起来的复合表达式,
是判断左边与右边的表达式的值是否相等,相等则整个表达式的值为 true, 不等则是false,
左边的表达式:(j>>(i-1))^1 ---> j 右移 (i-1) 位 之后与1 按位异或.
右边的表达式:k>>(i-1) ---> k右移(i-1)位
再问: 在运算时 比如说 5XOR 1 是不是系统把它转换成 101在XOR1 呢
再答: 这里只是与1 异或, 按照我的理解, 1在这里只是最后一位为1, 其他位为0,
8位的情况下,它是 0000 0001, 16位以此类推......
所以这里如果是 5 XOR 1 = 4, 4 XOR 1 = 5.
简单来说就是如果 (j>>(i-1)) 的结果
为偶数 则与1异或之后变为 j>>(i-1) + 1
为奇数 则是 j>>(i-1) - 1;

就是结果的最后一位取反: 1变成0, 0变成1.
再问: 这个我懂了 ,,, 我想知道
位运算在系统中是直接使用的 还是要转成二进制再用?
再答: 你要是问在系统中使用, 这些数据本身在系统中都是二进制形式存储, 又何来转换呢?
再问: e有道理 谢了