当前位置: 首页 > news >正文

反码 原码 补码

一、核心概念:原码、反码、补码(以 8 位二进制为例)

三者均针对“带符号数”(最高位为符号位:0 表示正数,1 表示负数),仅负数的编码规则不同,正数的原/反/补码完全一致。
编码类型 正数(以 +3 为例) 负数(以 -3 为例) 规则说明
原码 0000 0011 1000 0011 符号位 + 数值的绝对值二进制
反码 0000 0011 1111 1100 正数不变;负数符号位不变,数值位按位取反
补码 0000 0011 1111 1101 正数不变;负数 = 反码 + 1(解决原码“正负相加不为0”的问题)

二、Java 验证程序:通过位运算观察补码特性
通过 Integer.toBinaryString() 可获取整数的 32 位补码(高位省略前导 0,负数显示完整符号位),结合位运算验证补码规则。
public class BinaryCodeTest {
public static void main(String[] args) {
// 1. 验证正数:原/反/补码一致
int positive = 3;
System.out.println("1. 正数 +3 的验证:");
System.out.println("十进制值:" + positive);
// toBinaryString 输出补码,正数无符号位问题,直接对应数值
System.out.println("32位补码(省略前导0):" + Integer.toBinaryString(positive)); // 输出 11
System.out.println("------------------------");

    // 2. 验证负数:补码 = 反码 + 1(通过“负数 = 正数按位取反 + 1”验证)int negative = -3;System.out.println("2. 负数 -3 的验证:");System.out.println("十进制值:" + negative);System.out.println("32位补码:" + Integer.toBinaryString(negative)); // 输出 11111111111111111111111111111101(32位,符号位1,数值位为补码)// 验证补码规则:-3 = ~3 + 1(~为按位取反,正数取反后为负数的反码)int notPositive = ~positive; // ~3 = -4(二进制:11111111111111111111111111111100,即-3的反码)int negativeFromComplement = notPositive + 1; // 反码 +1 = 补码,结果为 -3System.out.println("验证:~3(反码) = " + notPositive); // 输出 -4System.out.println("验证:~3 + 1(补码) = " + negativeFromComplement); // 输出 -3System.out.println("------------------------");// 3. 验证补码的核心优势:正负相加为 0(解决原码的缺陷)int sum = positive + negative;System.out.println("3. 补码优势验证:");System.out.println("3 + (-3) = " + sum); // 输出 0(若用原码计算会得到 10000010,即-2,显然错误)System.out.println("0 的32位补码:" + Integer.toBinaryString(sum)); // 输出 0
}

}
三、运行结果与结论

1.	正数(如 +3)的二进制输出为 11,与原/反/补码一致,无符号位冲突。2.	负数(如 -3)的二进制输出为 32 位的 11111111111111111111111111111101,完全符合“补码 = 反码 + 1”的规则。3.	正负相加(3 + (-3))结果为 0,验证了补码解决“原码运算错误”的核心作用。

综上,Java 中整数的存储和运算均基于补码,这是计算机解决负数运算问题的标准方案。

http://www.hskmm.com/?act=detail&tid=15177

相关文章:

  • 线性结构常见应用之栈[基于郝斌课程]
  • 实测对比:权威榜单之公众号排版Top 5(含效果对比与适用建议)
  • go的泛型
  • 原码补码反码
  • lc1034-边界着色
  • 【汽车电子】汽车功能安全标准 ISO 26262
  • ISO 26262的不同安全等级:ASIL-D ASIL-C ASIL-B ASIL-A
  • C#学习1
  • 02020405 EF Core基础05-EF Core反向工程、EF Core和ADO.NET Core的联系、EF Core无法做到的事情
  • 02020406 EF Core基础06-EF Core生成的SQL
  • Gemini-2.5-Flash-Image-Preview 与 GPT-4o 图像生成能力技术差异解析​ - 教程
  • 新学期每日总结(第2天)
  • 在CodeBolcks下wxSmith的C++编程教程——使用菜单和组件
  • 单调队列
  • 软工第一次编程
  • 第二次软工作业
  • 9.23总结
  • 日志|力扣|不同路径|最小路径和|动态规划|Javase|IO|File|Javaweb
  • 如何建立 5 μm 精度的视觉检测?不仅仅是相机的事
  • 函数 cmd_info_change_cur_model_group
  • 线程--相关概念、两种创建线程的方式
  • 恢复某个数据文件不适当,导致DataGuard无法open数据库
  • Nginx 部署及配置
  • vite静态资源处理
  • 洛谷B4040 [GESP202409 四级] 黑白方块 题解
  • SerpApi:一站式搜索引擎数据抓取API完全指南
  • 补whk时的鲜花(持续更新)
  • css 使用记录 随笔
  • newDay02
  • 【OI 档案-2025】CSP 赛前集训记(初赛后+复赛)