当前位置: 首页 > 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.gsyq.cn/news/10586.html

相关文章:

  • lc1034-边界着色
  • ISO 26262的不同安全等级:ASIL-D ASIL-C ASIL-B ASIL-A
  • Gemini-2.5-Flash-Image-Preview 与 GPT-4o 图像生成能力技术差异解析​ - 教程
  • 鸿蒙ArkTS Canvas实战:转盘抽奖程序开发教程(基础到进阶) - 指南
  • 新学期每日总结(第2天)
  • US$128 Yanhua Mini ACDP Module6 MQB/MMC Instrument with Adapters
  • 9.23总结
  • VSCode C/C++ 开发环境配置
  • 补whk时的鲜花(持续更新)
  • newDay02
  • 代码随想录算法训练营第七天 | leetcode 454 383 15 18
  • etcd压测造成数据目录过大恢复 - 指南
  • springboot与vue中webSocket前后端连接障碍
  • 2025.9.23总结 - A
  • 实用指南:PHP 使用说明
  • CF520E Pluses everywhere 题目分析
  • java里面的IO流分为哪几种,他们的区别是什么呢
  • 达成度报告
  • 内网环境怎么安装软件(用 yum / apt 下载离线包并搬入内网)
  • tanh函数
  • P13617 [ICPC 2024 APC] Bit Counting Sequence
  • 打一局吗(60pts 解法)
  • 2025.9.23——1绿
  • 2025.9.23
  • 第6.2节 Android Agent制作<三>
  • LVS 服务器 知识
  • 【有源码】基于LTM模型+大素材的电信客户流失数据分析系统-基于机器学习的电信客户流失预测与分析框架-基于客户画像的电信流失用户识别与分析平台
  • Apifox-windows-latest.exe 安装教程(附详细步骤,一键下载安装指南)​
  • PyTorch图神经网络(四)
  • 告别材料乱堆、用电违规!AI 施工监测系统覆盖重点施工场景隐患