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