Java 位移操作

本文详细解释了位运算符“>>”、“>>>”、“<<”的工作原理及其应用实例,特别是它们如何处理符号位以及进行有符号和无符号位移的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a)“>>”运算符 

“>>”运算符作带符号的位移处理,它作位移处理时,会先将值向右移,并在高位填0,然后将位移后所空出的高位,全部改成原来的最高位的值(代表正负号的位)。也就是说负的值位移后,仍然是负的值,比如: 

-10>>2 =-3 

-10= 1111 1111 1111 1111 1111 1111 1111 0110 

右移2位:0011 1111 1111 1111 1111 1111 1111 1101 

结果:1111 1111 1111 1111 1111 1111 1111 1101 (全部天上原本符号位的值:1) 

b)“>>>”运算符 

“>>>”运算符所作的是无符号的位移处理,它不会将所处理的值的最高位视为正负符号,所以作位移处理时,会直接在空出的高位 填入0。当我们要作位移的原始值并非代表数值时(例如:表示颜色图素的值,最高位并非正负号),可能就会需要使用此种无符号的位移。比如: 

-10>>>2=1073741821 

-10=1111 1111 1111 1111 1111 1111 1111 0110 (不管原来的“符号”位的值(一长串1),空上的全部直接填0) 

0011 1111 1111 1111 1111 1111 1111 1101=1037341821 

c)“<<”运算符 

“>>”运算符的所作的也是无符号的位移处理,同样地,它不会将所处理的值的最高位视为正负符号,它作位移处理时,会直接左移并在低位填入0。所以第二高位以下的位若移到了最高位,该值的正负可能会与原来的不同。 

-2147483647<<2=4 

-2147483647=1000 0000 0000 0000 0000 0000 0000 0001 



0000 0000 0000 0000 0000 0000 0000 0100=4 

d)“<<<”运算符 
恩,当然了,在java里不存在它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值