早教吧 育儿知识 作业答案 考试题库 百科 知识分享

位运算的运算规则是什么?比如说负整数的按位求或、按位求异或怎么求?见补充:按位求或:(-3^2)我算的跟计算机算的结果一致:-1;可是(3^-2)我算的是:-1,而计算机算的是-3,怎么具体是

题目详情
位运算的运算规则是什么?比如说负整数的按位求或、按位求异或怎么求?见补充:
按位求或:
(-3^2)我算的跟计算机算的结果一致:-1;可是(3^-2)我算的是:-1,而计算机算的是-3,怎么具体是怎么算的啊?
(-3^-2)的结果应该跟(3^2)一样都是:为什么计算机算的却是:
3^~2)的结果为什么会跟(3^2)一样啊?
▼优质解答
答案和解析
首先,^是异或,不是或,异或是指位不同则为1
-3^2:-0011 ^ 0010(我以四位为例,实际一般是32位,和机器有关) 负数要用补码(除符号位外取反加1)计算,即 1011 取反加1 : 1101(-3补码), 1101 ^ 0010得 1111(补码),转原码,减1取反,即1110再取反,1001所以结果为 -1
而 3^-2,实际上是 0011^1110(-2,1010的补码) ,得1101(结果补码),减1取反,得1011(原码),-3
-3^-2,即 1101^1110,得0011,即3,而 3^2,即0011^0010,得,0001,即1
~表示取反,3为0011,~3就是1100,2为0010,~2就是1101, ~3^~2,即 1100^1101,得0001,即1.