news 2026/1/22 12:08:45

[原码反码补码]傻傻搞不懂?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[原码反码补码]傻傻搞不懂?

[原码反码补码]傻傻搞不懂?

个人导航

知乎:https://www.zhihu.com/people/byzh_rc

CSDN:https://blog.csdn.net/qq_54636039

注:本文仅对所述内容做了框架性引导,具体细节可查询其余相关资料or源码

参考文章:各方资料

原码

最高位表示符号位(0表示正数, 1表示负数)
其余位表示数值的大小

数的正负之分只有符号位的变化 ->原码不能做加减法

负数原码-正数原码 1000 0100(-4) - 0000 0001(+1) ----------------- 1000 0011(-3)

本质上是− ( 4 − 1 ) = − 3 -(4-1)=-3(41)=3

反码

正数的反码就是自身
负数的反码是由原码符号位不变,其余位取反得到

负数反码-正数反码 1111 1011(-4) - 0000 0001(+1) ----------------- 1111 1010(-5)

结果对了(结果是负数)

负数反码+正数反码 1111 1100(-3) + 0000 0101(+5) -------------------- 0000 0001(+1)

结果少1(结果是正数)

正数反码+负数反码 0000 0111(+7) + 1111 1100(-3) ---------------------- 0000 0011(+3)

结果少1(结果是正数)

补码

正数的补码与原码相同
负数的补码为其反码加1

负数补码+正数补码 1111 1101(-3) + 0000 0101(+5) -------------------- 0000 0010(+2)

对了!

理解

原码是太极形状, 方向相同没法连起来

反码: 数值上没毛病, 但是二进制上却差1

补码: 方向可以连起来 -> 完成加减法的定义(类似数轴)

公式

[ X ] 补 = ( 2 n + [ X ] 原 ) m o d 2 n [X]_{\text{补}} = \left(2^n + [X]_{\text{原}}\right) \mod 2^n[X]=(2n+[X])mod2n

例子1:正数(X = 10 X=10X=10

代入公式:
[ 10 ] 补 = ( 2 8 + 10 ) m o d 2 8 = ( 256 + 10 ) m o d 256 = 266 m o d 256 = 10 \begin{align} [10]_{\text{补}} &= (2^8 + 10) \mod 2^8 \\ &= (256 + 10) \mod 256 \\ &= 266 \mod 256 \\ &= 10 \end{align}[10]=(28+10)mod28=(256+10)mod256=266mod256=10
二进制表示:10 1010的8位补码是00001010(和原码一致)

例子2:负数(X = − 10 X=-10X=10

代入公式:
[ − 10 ] 补 = ( 2 8 + ( − 10 ) ) m o d 2 8 = ( 256 − 10 ) m o d 256 = 246 m o d 256 = 246 \begin{align} [-10]_{\text{补}} &= (2^8 + (-10)) \mod 2^8 \\ &= (256 - 10) \mod 256 \\ &= 246 \mod 256 \\ &= 246 \end{align}[10]=(28+(10))mod28=(25610)mod256=246mod256=246
二进制表示:246 246246的8位二进制是11110110(对应“原码取反+1”的结果:− 10 -1010原码是10001010,取反得11110101,加1得11110110

例子3:零(X = 0 X=0X=0

代入公式:
[ 0 ] 补 = ( 2 8 + 0 ) m o d 2 8 = 256 m o d 256 = 0 \begin{align} [0]_{\text{补}} &= (2^8 + 0) \mod 2^8 \\ &= 256 \mod 256 \\ &= 0 \end{align}[0]=(28+0)mod28=256mod256=0
二进制表示:8位补码是00000000(唯一表示,无“-0”)

例子4:补码特殊值(X = − 128 X=-128X=128,8位)

代入公式:
[ − 128 ] 补 = ( 2 8 + ( − 128 ) ) m o d 2 8 = ( 256 − 128 ) m o d 256 = 128 m o d 256 = 128 \begin{align} [-128]_{\text{补}} &= (2^8 + (-128)) \mod 2^8 \\ &= (256 - 128) \mod 256 \\ &= 128 \mod 256 \\ &= 128 \end{align}[128]=(28+(128))mod28=(256128)mod256=128mod256=128
二进制表示:10000000(没有对应原码,是补码特有的)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/21 11:18:18

前后端分离企业项目管理系统系统|SpringBoot+Vue+MyBatis+MySQL完整源码+部署教程

摘要 随着信息技术的快速发展,企业对高效、灵活的项目管理系统需求日益增长。传统的前后端耦合架构在开发效率、维护成本和扩展性方面存在诸多不足,难以满足现代企业动态化、协同化的管理需求。前后端分离架构通过解耦前端展示与后端逻辑,显著…

作者头像 李华
网站建设 2026/1/21 7:50:52

web项目申报系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】

摘要 随着信息技术的快速发展,传统的手工申报方式已无法满足现代企业和机构对高效、精准管理的需求。web项目申报系统信息管理系统通过数字化手段实现了项目申报流程的自动化,显著提升了工作效率和数据的准确性。该系统不仅解决了传统申报过程中存在的流…

作者头像 李华
网站建设 2026/1/18 9:19:02

基于SpringBoot+Vue的web项目申报系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着信息技术的快速发展,传统的手工申报管理模式已无法满足现代企事业单位对高效、便捷、透明化管理的需求。项目申报管理系统作为一种信息化工具,能够有效解决申报流程繁琐、数据管理混乱、审批效率低下等问题。该系统通过数字化手段实现项目申报、…

作者头像 李华
网站建设 2026/1/21 14:42:41

当问卷告别 “凭经验设计”:宏智树 AI 重构科研测量的精准逻辑

当问卷告别 “凭经验设计”:宏智树 AI 重构科研测量的精准逻辑 你是否有过这样的困惑?花费数月设计的问卷,回收数据后却发现变量相关性微弱,研究假设无法验证;严格按照模板制作的量表,在特定样本群体中信度…

作者头像 李华