1.<< 左移
2.>>> 无符号右移
3.>> 有符号右移
先说说移位,是对一串二进制数进行移位。
分为左移以及右移,右移又分为有符号右移以及无符号右移,那么他们的区别又是什么呢?
演示一下:
左移
00001111
====>00011110
====>00111100
====>01111000
有符号右移
00001111
====>00000111
====>00000011
====>00000001
11110000
====>11111000
====>11111100
====>11111110
无符号右移
00001111
====>00000111
====>00000011
====>00000001
11110000
====>01111000
====>00111100
====>00011110
区别:
1.左移/右移:在于二进制数移动的方向不同.
2.有符号/无符号:因移动而空出的符号位,是否按原来的符号位数字来补.
计算:
1.左移n位,相当于乘以2^n,溢出时会为零
2.右移,相当于除以2^n,不过负数要注意符号问题
举个例子:
定义一个byte类型的变量,值为-7
,它在计算机中的存储为1111 1001.
左移一位: 1111 0010
= -14
左移两位: 1110 0100
= -28
有符号右移一位: 1111 1100
= -4
无符号右移一位: 0111 1100
= 124