位运算的运算规则是什么?
首先,^是异或,不是或,异或是指位不同则为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。
扩展资料:
位运算就是二进制数值按照位运算符&(与),|(或),~(取反),^(异或),>>(左移),<<(右移)对二进制数值进行运算,我们知道 程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算说穿了,就是直接对整数在内存中的二进制位进行操作。
比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。
参考资料来源:百度百科-位运算
基本的逻辑运算有:与、或、非、异或。
此外还有:左右移、左右环移。
规则不一,难以尽述。 自己去翻书吧。