[转帖]计算机为什么选用补码表示整数?

计算机,为什么,选用,补码,表示,整数 · 浏览次数 : 0

小编点评

**整数主要有三种表示方法:** 1. **原码**:第一位表示符号,剩余位表示数值反码正数的反码是其原码本身。 2. **反码**:负数的反码是在其原码的基础上,符号位不变,其余各位取反补码正数的补码就是其原码本身。 3. **补码**:是在其原码的基础上,符号位不变,其余各位取反,最后 +1(也即在反码的基础上 +1)举个例子,下面的表格展示了 -4 到 3 的三种表示方法: | 数值 | 原码 | 反码 | 补码 | |---|---|---|---| | 3 | 0110 | 1001 | 100110 | | -4 | 1000 | 1110 | 101100 | | 10 | 0001 | 1110 | 100110 | **计算机为什么选用补码表示整数呢?** 因为使用补码,减法运算可以通过负数的加法运算来表示,处理器就不需要减法电路了。例如 B - A,可以通过加法运算 B + (-A) 来实现。

正文

https://zhuanlan.zhihu.com/p/501536618

 

 
深入理解计算机系统(原书第3版)
京东
¥91.80
去购买​

整数主要有三种表示方法:原码、反码、补码,目前的计算机都采用补码表示方法。各种表示方法的定义如下:

原码 第一位表示符号,剩余位表示数值
反码 正数的反码是其原码本身;负数的反码是在其原码的基础上,符号位不变,其余各位取反
补码 正数的补码就是其原码本身;负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后 +1(也即在反码的基础上 +1)

举个例子,下面的表格展示了 -4 到 3 的三种表示方法:

数值 原码 反码 补码
3 011 011 011
2 010 010 010
1 001 001 001
0 000 000 000
100 111
-1 101 110 111
-2 110 101 110
-3 111 100 101
-4     100

三种编码方式对于整数是相同的,负数则是不同的。原码和反码的0有两种表示方法,补码中只有一种,因此,补码多出一个码用于表示-4。

计算机为什么选用补码表示整数呢?答案是使用补码,减法运算可以通过负数的加法运算来表示,处理器就不需要减法电路了。例如 B - A,可以通过加法运算 B + (-A) 来实现。

为什么补码能满足B-A通过B+(-A)来实现呢? B-A本质上就是B与A之间的距离,这就要求表示B(码)与A(码)之间的距离和B与A之间的距离是相同的。原码和反码因为各有两个码表示0,因此B(码)与A(码)之间的距离比B与A之间的距离大1,而补码就没有此问题。

我们用一套编码表示整数,只要这套编码的表现和十进制整数的表现一致即可。因此,我们可以用补码表示任意的整数区间,例如:[000,111]可以表示[-4,3]、[-2,5] 、[10,17] 、[0,7],只不过[-4,3][0,7]恰巧符合人类的习惯,被命名为有符号整数和无符号整数。

补码 有符号整数 自定义1 自定义2 无符号整数
011 3 5 13 3
010 2 4 12 2
001 1 3 11 1
000 0 2 10 0
111 -1 1 17 7
110 -2 0 16 6
101 -3 -1 15 5
100 -4 -2 14 4

与[转帖]计算机为什么选用补码表示整数?相似的内容:

[转帖]计算机为什么选用补码表示整数?

https://zhuanlan.zhihu.com/p/501536618 深入理解计算机系统(原书第3版) 京东 ¥91.80 去购买​ 整数主要有三种表示方法:原码、反码、补码,目前的计算机都采用补码表示方法。各种表示方法的定义如下: 原码 第一位表示符号,剩余位表示数值 反码 正数的反码是其

[转帖]远超DDR4,速度可达DDR5 6400!DDR5内存技术、产品解析

https://www.sohu.com/a/326810241_616364 内存是计算机技术的重要组成部分,经历了长时间的竞争更替和路线选择之后,PC内存技术被稳定在以DDR技术为基础的发展路线上。从DDR到DDR2、DDR3,今天主流的内存已进化至DDR4。乐观估计,DDR5将从2019年起降

[转帖]焱融全闪系列科普| 为什么 SSD 需要 NVMe?

https://aijishu.com/a/1060000000371942 云计算存储极术推荐 NVMe 的由来 目前机械硬盘大多数使用 SATA (Serial ATA Advanced Host Controller Interface) 接口,接口协议为 AHCI,是 Intel 联合多家公

[转帖]Vxlan基础理解

一 . 为什么需要Vxlan 1. vlan的数量限制 4096个vlan远不能满足大规模云计算数据中心的需求 2. 物理网络基础设施的限制 基于IP子网的区域划分限制了需要二层网络连通性的应用负载的部署 3. TOR交换机MAC表耗尽 虚拟化以及东西向流量导致更多的MAC表项 4. 多租户场景 I

[转帖]计算机网络【TCP的序号 确认号详解 TCP三次握手 和 四次挥手】

文章目录 初始TCP三次握手--建立连接再聊TCP的序号和确认号TCP建立连接--三次握手为什么需要三次握手,二次握手为什么不行?假如第三次握手失败,是如何处理的?TCP释放连接--四次挥手为什么断开连接需要4次挥手TCP释放连接--状态解读 初始TCP三次握手–建立连接 在发送方和接收方方收发TC

[转帖]计算机二进制的源码、反码、补码详讲解

一、原码、反码、补码的概念 原码 :最高位是符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制。 反码:正数的反码与原码一致,负数的反码是对原码按位取反,只是最高位(符号位)不变。 补码:正数的补码与原码一致,负数的补码是对原码按位取反加1,符号位不变。 二、示例 例如 十进制数字: +

[转帖]从CPU指令集自主到信息技术产业自主

https://zhuanlan.zhihu.com/p/365210753 现代信息技术的应用都是以计算机为基础,CPU是计算机中的信息处理中枢。CPU指令集是CPU逻辑电路与操作系统和应用程序交流信息时,对词汇和语义的精确约定,决定了操作系统和应用软件能否与CPU兼容,CPU的硬件接口规范又决定

[转帖]什么是拒绝服务(DoS)攻击?

https://www.cloudflare.com/zh-cn/learning/ddos/glossary/denial-of-service/ 什么是拒绝服务攻击? 拒绝服务(DoS)攻击是一种网络攻击,恶意行为者通过中断设备的正常功能,使其目标用户无法使用计算机或其他设备。DoS 攻击通常通

[转帖]BIOS and UEFI

https://zhuanlan.zhihu.com/p/515005307 BIOS的相关知识 什么是BIOS? BIOS,即微机的基本输入输出系统(Basic Input-Output System),其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的

[转帖]Linux性能测试之LTP

https://www.modb.pro/db/487946 hello,大家好,今天为大家更新一篇关于Linux性能测试的文章,大家都知道在Windows下测试计算机的性能,我们可以使用鲁大师等软件进行测试,直观易懂便捷有效,但是在Linux下进行计算机性能测试该用什么呢?今天就推荐一个压力测试的