为了账号安全,请及时绑定邮箱和手机立即绑定

请问java中的>>>和>>>=是什么意思

请问java中的>>>和>>>=是什么意思

阿晨1998 2019-11-15 15:10:06
请问java中的>>>和>>>=是什么意思
查看完整描述

5 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

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

-10>>>2=1073741821

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

0011 1111 1111 1111 1111 1111 1111 1101=1037341821

~ 按位非(NOT)(一元运算)
& 按位与(AND)
| 按 位或(OR)
^ 按位异或(XOR
>> 右移
>>> 右移,左边空出的位以0填 充
运算符 结果
<< 左移
&= 按位与赋值
|= 按位或赋值
^= 按 位异或赋值
>>= 右移赋值
>>>= 右移赋值,左边空出的位以0填充
<<= 左 移赋值

 


查看完整回答
反对 回复 2019-11-16
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

示符号,0位正,1为负)
无论>>还是>>>都是针对二进制数进行操作的。
1、右移运算符>>使指定值的所有位都右移规定的次数。右边移出去的部分扔掉不要,左边空出来的部分用原来的数字填充(这就是所谓的带符号右移)
——比如说5,右移后为00000010。
——你给的例子,假设x=-12,表示为32位int型就是
11111111111111111111111111110100
x>>3即带符号右移3位,结果是
11111111111111111111111111111101,化为十进制等于-3
2、>>>与>>唯一的不同是它无论原来的最左边是什么数,统统都用0填充。
——比如你的例子,byte是8位的,-1表示为byte型是11111111(补码表示法)
b>>>4就是无符号右移4位,即00001111,这样结果就是15。


查看完整回答
反对 回复 2019-11-16
  • 5 回答
  • 0 关注
  • 341 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信