1.首先先来了解下为啥没有区分算数左移和逻辑左移?
因为左移的时候无论是算数左移还是逻辑左移,左移过后空出来的低位都用0填充,所以没有区别
2.左移和右移的普遍规律是啥?
假设有个整数N 以int类型举例
如果左移X位,则得到的结果是N*2的X次方
如果右移X位,则得到的结果是N/2的X次方
3.>>>逻辑右移?
因为如果按照逻辑右移来看,
假设移位前是4 ,4>>>2 向右移两位,高位补0,则得到的结果是1;
那如果是-4呢?-4>>>2 向右移两位,高位补0,得到的结果是1073741823, 那么问题来了,右移两位不应该变成-4/(2的平方)=-1呀,
所以负数的逻辑右移不能得到序号2上的普遍规律
4.>>算数右移,
x=-4
x>>2 则得到的x的结果是-1,
算数右移在正数上高位补0,在负数上高位补1
5.下面是算数右移和逻辑右移图示(图为8位二进制数):
逻辑右移,根据数字类型是long还是int等的不同,相同的移位得到的值也不同,以上代码是int型,32位,逻辑右移2位得到1073741823
下图是8位,逻辑右移两位,得到63