算数右移>>和逻辑右移>>>的区别

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

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值