news 2025/12/28 10:13:51

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

作者头像

张小明

前端开发工程师

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进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/26 3:09:44

生产就绪特性-从开发到部署的完整解决方案

GitHub 主页 在我 40 年的软件开发历程中,我见证了无数项目从开发到部署的完整生命周期。最让我痛心的是,很多优秀的项目因为部署阶段的问题而失败。配置管理、服务控制、监控告警,这些看似简单的问题往往成为项目上线的致命障碍。 最近的一…

作者头像 李华
网站建设 2025/12/26 14:15:08

【前端知识点总结】Promise的介绍

1. Promise 是什么?想象一下,你去一家网红奶茶店买奶茶。因为人太多,店员不能立刻做好。这时你有两个选择:选择一:一直等(同步思维):你就站在柜台前,眼睛死死盯着制作区&…

作者头像 李华
网站建设 2025/12/26 7:30:51

当 AI 写论文遭遇 “答辩级拷问”:9 款主流工具的生死考验

“这篇参考文献我查不到,是虚构的吗?”“图表数据来源是什么?能提供原始数据吗?”“方法部分只写了模型名称,控制变量怎么设置的?” 毕业季来临,AI 写论文工具已成刚需,但市面上 Ch…

作者头像 李华
网站建设 2025/12/24 6:18:32

科研人的 “数据魔咒”:明明数据在手,却挖不出核心结论

“实验数据堆了几百 G,却不知道用什么方法分析”“SPSS 操作半天,结果还是看不懂”“统计检验选错模型,论文被审稿人质疑结论可信度”—— 这是无数非统计专业科研人的共同困境。 科研的核心是 “用数据说话”,但对于生物、医学、…

作者头像 李华
网站建设 2025/12/25 10:23:56

[特殊字符] 写论文软件哪个好?先看毕业党最在意的 4 大核心标准

临近毕业季,“写论文软件哪个好” 成为高校学子的高频困惑。但选择论文工具,绝不能只看 “能生成文字”—— 真正靠谱的软件,必须满足四大核心需求:能否覆盖从开题到答辩的全流程?生成内容是否兼具学术深度与原创性&am…

作者头像 李华