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

 

posted @   Peter.Jones  阅读(181)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示