移位运算
1.移位运算是在二进制基础上对数字进行位移,按照平移方向可以分为两种,左移<<和右移>>,。在移位运算中,byte,short,char型在移位运算中会变成int型。规定移动的次数为移动次数与32位的余数,例如33次和1次是等价的。
long型规定移动次数是移动次数对64取余。
2.无论是有符号运算还是无符号运算,左移时都是高位舍弃,地位补0.
3.但对右移时,无符号数补0,有符号数补补符号位,即正数补0,负数补1.
4.程序举例:
5.分析
为什么number变成了FFFFFFFE了?
char型在移位中变成int型,为4个字节,32位。
移位过程如下:01111110 ->0000 0000 0000 0000 0000 0000 0111 1110 ->1111 1100 0000 0000 0000 0000
0000 0000(注明:左移25位时加上原来8位,则最高位0溢出,故舍去)->1111 1111 1111 1111 1111 1111 1111
1111 1110 ->FFFFFFFE