今天晚上学习《零基础学Java》,看到第50页时,发现书上一行代码自己想不通,这行代码意思是将123按位取反,程序运行后输出结果是-124,即~123=-124.
开始我个人理解是123转换成二进制为:01111011,按位取反后为10000100,即132,与真实输出结果-124不一致。后来我查阅相关资料,才明白原因,以下为正确计算方法:
(1)二进制数在内存中以补码的形式存储,123的原码为01111011,123的反码为10000100,123的补码为10000101,即123在内存中以10000101形式存储。
(2)10000101按位取反后为:10000101,其补码为:10000110
知识点:
1>反码的表示方法是:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。
2>补码的表示方法是:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1(即在反码的基础上+1)。
继续阅读与本文标签相同的文章
上一篇 :
Python基础2-Python中文乱码(转)
下一篇 :
英国应用区块链技术整合电表及发展衍生应用
-
看我Git 72变,GitHub发布4已超过8000星
2026-05-19栏目: 教程
-
深入MongoDB4.2新特性:字段级加密 Client-Side Field Level Encryption
2026-05-19栏目: 教程
-
日志服务数据加工最佳实践: 字符串动态键值对的提取
2026-05-19栏目: 教程
-
日志服务数据加工最佳实践: 从其他logstore拉取数据做富化
2026-05-19栏目: 教程
-
SpringBoot2 整合 FastDFS 中间件,实现文件分布式管理
2026-05-19栏目: 教程
