千家信息网

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

发表于:2024-11-22 作者:千家信息网编辑
千家信息网最后更新 2024年11月22日,如何理解Java中左移和右移问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1 原码、反码、补码原码:将十进制转化为二进制即原码;
千家信息网最后更新 2024年11月22日如何理解Java中左移和右移问题

如何理解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中无论截图中的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中左移和右移问题问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

补码 反码 问题 符号 高位 中左 最高 正数 负数 移动 相同 二进制 低位 字节 情况 截图 更多 类型 计算机 帮助 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 青少年网络安全危害视频 设计有效的数据库系统 网站用的服务器多少钱 大富豪后台连接不到数据库 工业园区大数据软件开发活动 CAS数据库服务器厂家 PS4艾尔登法环登录不了服务器 大生态网络安全体系 软件开发的需求分析报告 软件开发代码缩进 性价比高的重庆服务器托管云空间 数据库安全管理试题 粽子销售数据库 金融重要时期网络安全保障 网络安全基础课后思考题答案 彭水网络安全周 国家网络安全宣传周活动准备 软件开发单一来源采购理由 邯郸网络技术推荐厂家 了解最新的网络安全法规 福州市三剑客网络技术 天涯社区互联网络科技公司 学软件开发该从什么学起 c 游戏服务器开发 金融重要时期网络安全保障 网络安全基础课后思考题答案 河南郑州网络技术学院怎么样 公司投标数据库 添加的数据库与原数据库重名 nysql数据库原理
0