Java位运算总结

来源:互联网 发布:哪款手机优化软件最好 编辑:程序博客网 时间:2024/05/20 20:55

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



0 0