温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何理解Java中左移和右移问题

发布时间:2021-11-22 09:16:14 来源:亿速云 阅读:161 作者:柒染 栏目:开发技术

如何理解Java中左移和右移问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

 1 原码、反码、补码

原码:将十进制转化为二进制即原码;

反码:正数的反码与原码相同,负数的反码(除却最高位的符号位不变)与原码相反;

补码:正数的补码与原码相同,负数的补码(除却最高位的符号位不变)与原码的取反加一。

举例:5 和 -5

5:

原码:0 0000000 00000000 00000000 00000101

反码:0 0000000 00000000 00000000 00000101

补码:0 0000000 00000000 00000000 00000101

-5:

原码:1 00000000 00000000 00000000 00000101

反码:1 1111111 11111111 11111111 11111010

补码:1 1111111 11111111 11111111 11111011

2 位移操作

我们需要知道将一个数字,在计算机中进行移动多少位,例如8<<1代表将8转化为二进制在计算机中左移1位,低位补零;

<<:左移:低位补0

>>:有符号右移:正数高位补0,负数高位补1

>>>:无符号右移,高位补零

为什么没有无符号左移呢?因为左移的情况下只存在补零的情况。

举例 :5 和 -5

5<<1

原码:0 0000000 00000000 00000000 00000101

左移1位:0 0000000 00000000 00000000 00001010

即:10

-5<<1

原码:1 00000000 00000000 00000000 00000101

补码:1 1111111 11111111 11111111 11111011

左移1位:1 1111111 11111111 11111111 11110110

取其补码:1 0000000 00000000 00000000 00001010

即:-10

5>>1

原码:0 0000000 00000000 00000000 00000101

右移1位:0 0000000 00000000 00000000 00000010

即:2

-5>>1

原码:1 00000000 00000000 00000000 00000101

补码:1 1111111 11111111 11111111 11111011

右移1位:1 1111111 11111111 11111111 11111101

取其补码:1 0000000 00000000 00000000 00000011

即:-3

5>>>1:与5>>1一样,都是高位补0

原码:0 0000000 00000000 00000000 00000101

右移1位:0 0000000 00000000 00000000 00000010

即:2

-5>>>1

原码:1 00000000 00000000 00000000 00000101

补码:1 1111111 11111111 11111111 11111011

右移1位:0 1111111 11111111 11111111 11111101

即:2147483645

代码运行截图

如何理解Java中左移和右移问题

总结:

位移操作很简单,使用补码移动,补齐空缺位就行,除了>>:补与最高位一致的;其他移动哪缺哪补零。

在java中无论截图中的a定义成 byte,short,int哪一种类型,它默认都是使用int类型(4字节32位),你使用long(8字节64位)

3 补充操作符

~(按位非):

逐位取反

|(按位或):

一真为真

1|0=1,

0|0=0,

1|1=1,

0|1=1

&(按位与):

两真为真

1|0=0,

0|0=0,

1&1=1;

0&1=0

^(按位异或):

相异为真

1^1=0

1^0=1

0^1=1

0^0=0.

关于如何理解Java中左移和右移问题问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI