ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

「计算机」- 原码、反码、补码(学习笔记) @20210212

2021-02-12 18:02:09  阅读:194  来源: 互联网

标签:11 反码 补码 负数 正数 原码


我们采用十进制,机器采用二进制。十进制与二进制可以相互转换,十进制的 0-255 与二进制的 00000000-11111111 对应。

但是现在出现个问题:我们的十进制是有负数的,那如何在机器中使用二进制表示负数呢?

对于这个问题,有以下几种方案:

原码(Original code)

将最高位视为符号位,即正数该位为 0,负数该位为 1(此时零有两种表示:+0 和 -0)
其余位表示数值的大小。

原码表示法示例:
00000010 = +2,00000011 = +3
10000010 = -2,10000011 = -3

使用原码的优点:
1)简单直观
比如 +11 的原码为 00001011,-11 的原码就是 10001011,只需修改首位。

使用原码的缺点:
1)无法直接参与计算
例如 (+11) + (-11) = 0,但是 (00001011) + (10001011) != 0,如要处理这个问题,则硬件需要特殊设计,这就增加复杂性。

反码(Inverse code)

正数的反码是:与原码相同;
负数的反码是:对正数的原码逐位取反;(或者对负数的原码逐位取反,但最高位为壹;)

反码表示法示例:
+12 的反码为 00001100
-12 的反码为 11110011

使用反码的缺点:
1)无法直接参与计算
例如:3 是正数,原码为 0011,反码为 0011;-3 原码是 1011,-3 反码是 1100;两数相加,依旧无法得零;

补码(Complement code)

正数的补码是:与原码相同;
负数的补码是:对正数的原码逐位取反,再加壹

补码表示法示例:
+12 的补码为 00001100
-12 的补码为 11110100

使用补码的优点:
1)将符号位和数值域统一处理
2)加法和减法也可以统一处理

附加说明

这是种负数的表示法,而不是说补码 10000001 通过进制转化可以得到 -127,我们只是定义 -127 在计算机中用 10000001 来表示。

参考文献

On the Primitive Code, Inverse Code, Complement Code and Shift Code of Operating System
百度百科/补码


标签:11,反码,补码,负数,正数,原码
来源: https://www.cnblogs.com/k4nz/p/14399045.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有