java原码,反码,补码 位运算
原码是什么?
反码是什么?
补码是什么?
原码:
正数:正数转换为二进制位就是这个正数的原码
负数:负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码
int 2 原码:
00000000 00000000 00000000 00000010
int -2 原码:
10000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011 # 3原码
10000000 00000000 00000000 00000011 # -3原码
反码:
正数的反码就是原码
负数的反码等于原码除符号位以外所有的位取反
00000000 00000000 00000000 00000011 #3反码
11111111 11111111 11111111 11111100 # -3反码
补码:
正数的补码与原码相同,
负数的补码为 其原码的反码,然后最低位加1
00000000 00000000 00000000 00000011 #3补码
11111111 11111111 11111111 11111101 # -3反码
总结:
正数的原码, 反码, 补码 都一样.
负数的原码, 反码, 补码 都不一样.
符号位 + 二进制位
int -1的原码,反码,补码:
10000000 00000000 00000000 00000001
11111111 11111111 11111111 11111110
11111111 11111111 11111111 11111111
位运算:
正数有符号右移: 高位通通补0
负数有符号右移: 换算成补码后右移,高位通通补1
无符号右移: 无论正数,负数, 高位通通补0, 所以出现负数变成正数, 依然是补码运算,只是高位补0.
-1 >> 1 # -1
-1 >>> 32 # -1
-1 >>> 31 # 1
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析