二进制原码、反码、补码和位运算

最近复习数据结构和算法,顺便复习下计算机的基础。

1、二进制原码、反码、补码

计算机中存储和运算是以二进制的补码进行,原码是方便用户的习惯。

正数的反码、补码都等于原码;

负数的反码是符号位(最高位)不变,其他位取反,补码为反码+1,逢2进1。

int为4个字节,也就是32个比特,int -3 其二进制表示为

10000000 00000000 00000000 00000011,内存运算时反码为

11111111 11111111 11111111 11111100

                                                      +1   为补码

11111111 11111111 11111111 11111101

2、位运算

负数是以补码参加运算,结果再转成原码;

&  与  有0则0;

|  或  有1则1;

^  异或  不同则位1;

~  取反  

<<  左移  右边补0,左移几位则等同于乘以2的几次方;

>>  右移  左边是补高位值,右移几位等同于除以2的几次方;

>>>  无符号右移  左边补0;

打听下这个变量名谁起的
原文地址:https://www.cnblogs.com/wmqiang/p/14873400.html