Java中右移运算

Java中右移运算,请给出详细过程,谢谢!-1>>2=-1-5>>2=2-5>>>2=1073741822... Java中右移运算,请给出详细过程,谢谢!
-1>>2 = -1
-5>>2=2
-5>>>2=1073741822
展开
 我来答
yugi111
2015-09-18 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。

操作数每右移一位,相当于该数除以2。

注:正数的原码,反码,补码一致;负数的反码是除去符号位外其余取反,负数补码是除去符号位外其余取反,末尾加1。 (二进制最左边一位是符号位)


带符号右移运算符(>>)

将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。


无符号右移运算符(>>>)

>>>运算符把 expression1 的各个位向右移 expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃


-1>>2 = -1   

-1:   原码:1000 0001  反码:1111 1110  补码:1111 1111

右移2位:1111 1111    ( 用补码操作,并用 1  补齐左边位)

再找反码:1000 0000    ( 除去左边符号位,其余取反 )

再找原码:1000 0001 = -1  ( 还是将反码末尾加1 )


-5>>2=-2

-5:   原码:1000 0101  反码:1111 1010  补码:1111 1011

右移2位:1111 1110    ( 用补码操作,并用 1  补齐左边位)

再找反码:1000 0001    ( 除去左边符号位,其余取反 )

再找原码:1000 0010 = -2  ( 还是将反码末尾加1 )


-5>>>2=1073741822

-5: 

原码:1111 1111 1111 1111 1111 1111 1111 0101

反码:1111 1111 1111 1111 1111 1111 1111 1010

补码:1111 1111 1111 1111 1111 1111 1111 1011

右移2位:0011 1111 1111 1111 1111 1111 1111 1110=1073741822


推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式