Tips:主要讲解java的左移右移操作,以及负数的移位操作
1. java对移位的运算进行了优化处理。
将 a<<b a>>b a左移右移b位的处理优化为:
a<<(b%32) a>>(b%32);
例题:
int a=1;
a>>32 等价于a>>(32%32) 即:a>>0 所以还是a本身
2.java对负数的移位操作
(1)负数在计算机中以补码的形式保存。补码:将该数的绝对值,按位取反,再加1.
(2)第二步移位操作:移位操作与正数的移位操作一样。(只是数值是补码形式进行即可)
例题:-1>>1
-1在 内存中ff ff ff ff 然后右移时左边补1,所以还是ffffffff 还是-1;
左移时右补0;右移时左补1;