1.源码,反码,补码:
(1)正整数的原码反骂补码都和原码一样,都为该数的二进制表示
(2)负数的反码是原码的二进制除了符号位之外,各位取反,补码是在反码末尾+1
(3)仅有带符号整数会有各种编码,无符号整数没有
(4)在计算机内,负数都是存为补码的,这样可以将符号位和其他为统一处理,
1.<<逻辑左移,符号位和其他位一起左移,最右补0,一般相当于*2,但有可能溢出,溢出范围为2^30-2^31-1,移位后最高位变1,变成负数(溢出)
一般左移以为相当于*2
>>算数右移,和上面的不对应,为正数时左边补0,为负数时左边补1. 算数右移一位相当于/2取整(注意负数,-3>>2 = -2)
对于正数 x>>1和x/2相等
对于负数 x>>1和x/2不一定相等.
>>>逻辑右移,与逻辑左移对应,连通符号位一起移动,左边补0
有个规则如果左移1位相当于乘以2 右移1位相当于除以2 取整
2.~ 按位非(NOT) 取反
^ 按位异或(XOR)相同为0相反为1