C++中位运算符使用

&    与    只有都为1结果为1

 0 & 0 = 0
 0 & 1 = 0
 1 & 0 = 0
 1 & 1 = 1

|   或   只要一个为1结果为1

0|0=0
0|1=1
1|0=1
1|1=1

^  异或  两个相同的数字为0,其余为1

0^0=0
1^0=1
0^1=1
1^1=0

~  取反   将进制位数进行取反

~1=-2  //0000  0001-->代表1
       //取反后  补码 1111  1110   最前面的1 代表这是负数。
       //输出时,先将补码 减 1 得 1111  1101-->这个数即为需要的反码
       //结果为--> 将 反码 符号位不变,其余位取反得  真正  输出的原码
       //1000  0010 --> -2
       
~0=-1

1、计算机是以补码方式存储的是二进制    --->重点  重点  重点

1、1 正数的补码即原码  例如 1--》0000  0001 

1、2 负数的补码为原码取反加一得到  例如 -1 原码  1000 0001 

补码=原码取反+1  --》1111  1111   符号位不变(第一个数)。计算机存储的是这个数

--------------------------------------------------------------------------------------------------------------

但是负数输出时。将补码再取反(以上面为例) 得 0000  0000。

由于第一个数为0  系统认为这个是正数的补码。既这就是我们输出的数-->0

-------------------------------------------------------------------------------------------------------------

取反运算简便方法

-(a+1)   a可以代表正数  负数  零  

你可能感兴趣的:(C++,c++,开发语言)