
JAVA 之原码 反码 补码及取反运算符~
发布日期:2021-05-10 23:35:45
浏览次数:41
分类:精选文章
本文共 640 字,大约阅读时间需要 2 分钟。
一、Java中的数据存储与表示方法
原码:数据对应的二进制形式就是这个数据的原码。
- 原码的符号位存在,0为正,1为负。
为什么要引入反码和补码?
- 原码在加减法操作中存在问题,导致结果与十进制原数不一致。
- 两次补码的和等于第三个补码,补码对应的十进制数的和也是成立的。
反码:在原码的基础上,符号位不变。
- 对于正数,反码等于原码。
- 对于负数,除了符号位,其他位进行反转。
补码:
- 对于正数,补码等于原码。
- 对于负数,补码是反码加1。
补码的本质
要将正数转化为对应的负数,可以通过 0 减去这个数得到。
例如:
- 8 的二进制是 00001000。
- -8 可以通过以下方式计算:0变成为全为0的形式,减去 00001000:00000000 - 00001000因为 00000000 < 00001000,不够减,需要向首位借1:转变为 1000000000(虚拟全1),然后具体位-位继续运算:1000000000 - 00001000 - 00001000 = 111110100
取反运算符 ~ 在 Java 中的应用
在 Java 中,~5 等于 -6。
具体过程:
- 5 的原码是 0000 0101。
- 取反后得到 1111 1010,但这是补码形式的表示。
- 想要得到原码,需先减1,再取反:11111010 - 1 = 11111001再取反得到 00000111,即 7,但符号位保持不变。
例如,补码的运算过程就变得简单直接,不用再处理原码形式下的加减问题。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年05月08日 14时19分40秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
TreeSet、TreeMap
2019-03-11
JVM内存模型
2019-03-11
可变长度参数
2019-03-11
堆空间常用参数总结
2019-03-11
3、条件查询
2019-03-11
cordova打包apk更改图标
2019-03-11
GitHub上传时,项目在已有文档时直接push出现错误解决方案
2019-03-11
页面置换算法
2019-03-11
文件系统的层次结构
2019-03-11
减少磁盘延迟时间的方法
2019-03-11
vue(渐进式前端框架)
2019-03-11
权值初始化和与损失函数
2019-03-11
vscode设置eslint保存文件时自动修复eslint错误
2019-03-11
Remove Extra one 维护前缀最大最小值
2019-03-11
Gradle实战四:Jenkins持续集成
2019-03-11
wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
2019-03-11
iOS 开发官方文档链接收集
2019-03-11
HDU - 4109 Instrction Arrangement
2019-03-11
JQuery--手风琴,留言板
2019-03-12
MFC 自定义消息发送字符串
2019-03-12