【计算机组成原理·考研】数值与编码

1.进位计数制及其相互转换

计算机内部所有信息采用二进制进行编码的原因:
1.二进制只有两种状态,使用具备两个状态的物理器件便可实现,制造成本低。
2.二进制位的1和0对应逻辑值中的"真"与"假",便于实现逻辑判断。
3.二进制编码的运算规则简单,便于通过逻辑门电路实现。

1.1 进位计数法

1.1.1 说明
基数

每个数位所用到的不同数码的个数。
e.g.:二进制的基数为,八进制的基数为8,十进制的基数为10,十六进制的基数为16。

位权

每个数码所表示的数值 = 该数码本身 * 所在数位有关的常数,该常数便是位权。

进制数

一个r进制数(KnKn-1···K0K-1···K-m)可以表示为:
image.png
对于r的取值,我们按下面四种讨论分析:
(1)二进制
基数为2,共0、1两个不同的数码,逢二进一,位权为2i ,其中i为所在位数。
(2)八进制
基数为8,共0、1、2、3、4、5、6、7八个不同的数码,逢八进一。
(3)十进制
最常使用的一种,这里不做过多赘述。
(4)十六进制
基数为16,共0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六个不同的数码,其中AB分别对应1015,逢十六进一。

1.2 不同进制数之间的转换

二进制<->八进制/十六进制

以小数点为界限,每三位(八进制)或四位(十六进制)划分为一组,数的最左边或最右边不够则加0补齐。
栗子🌰:
image.png

同样,八进制/十六进制转换到二进制则是上述过程的逆过程,只需要将每位展开为三位(八进制)或四位(十六进制)即可,当前你也可以将数的最左/右侧的0给去掉。

八进制<->十六进制

可以先借助中间二进制量作为桥梁进行转换。比如八进制转十六进制:先将八进制“展开”为二进制,再将二进制“压缩”为十六进制。

任意进制数->十进制

将任意进制数的各位数码 * 他们的位权,再累加即可(该方法称为“按权展开相加法”)。
栗子🌰:
image.png

十进制->任意进制数

采用基数乘除法进行操作。
对整数部分进行除基取余,最先取得的余数为整数部分的最低位,最后取得的余数则为最高位。
image.png
对小数部分进行乘积取整,最先取得的整数为小数部分的最高位,最后取得的整数则是最低位。
image.png

在计算机中,小数和整数不同,整数可以连续表示,但小数却是离散的,所以并不是每个十进制小数都可被准确地用二进制表示,因此无论经过多少次乘二取整都无法得到精确的结果,但是所有二进制小数都可用十进制小数表示。

1.3 真值和机器数

真值

用正、负号代表整数、负数的数称为真值。真值是机器数代表的实际值。
e.g. +15、-8。

机器数

将数的负号和数值部分一起编码,将数据的符号数字化,通常用“0”表示“正”,用“1”表示“负”,这种把符号“数字化”的数称为机器数。常见的机器数有原码,反码,补码。
e.g. 0,101(这里的“,”仅仅区分符号位与数值位)表示+5。

2.BCD码(大纲已删除)

3.定点数的编码表示

3.1 说明

根据小数点的位置是否固定,将计算机中的数据格式划分为:定点表示与浮点表示。在现代计算机中,通常用定点补码整数表示整数,用定点原码小数表示浮点数的尾数部分,用移码表示浮点数的阶码部分。

3.2 机器数的定点表示

定点小数

定点小数是纯小数,约定小数点位置是在符号位之后,有效数值部分最高位之前。
以数据X = x0x1x2···xn(其中x0为符号位,x1~xn为数值的有效部分,x1为最高数值位)为例:
image.png

定点整数

定点整数是纯整数,约定小数点在有效数值位的最低位之后。
以数据X = x0x1x2···xn(其中x0为符号位,x1~xn为尾数部分,xn为最低数值位)为例:
image.png

3.3 原码、补码、反码、移码

原码

用机器数的最高位表示符号位,其余各位表示数的绝对值。

纯小数的原码定义

image.png
栗子🌰
image.png

若字长为n+1,则原码小数的可表示范围为-(1-2-n) <= x <= (1-2-n)

纯整数的原码定义(了解)

image.png
栗子🌰
image.png

若字长为n+1,则原码整数的可表示范围为-(2n-1) <= x <= (2n-1)

原码表示的优缺点
优点

与真值的对应关系简单、直观,转换简单,实现乘除运算方便。

缺点

(1)0的表示不唯一,即[+0]原 = 0,0000 ,[-0]原 = 1,0000。
(2)原码加减运算比较复杂。

反码

原码 = 原码按位取反。

反码表示的缺点

(1)0的表示依旧不唯一(依旧存在正负0)。
(2)表示范围比补码少一个最小负数。
(3)反码在计算机中很少使用,通常用作数码变换的中间表示形式。

补码

补码表示法中的加减运算统一采用加法操作实现(符号位与数值位共同参与运算)。
补码 = 原码按位取反+1。
如果一个数的补码是Y,那么这个数的负数的补码则是 Y取反 + 1(注意是全部位取反,包括符号位)。

纯小数的补码定义

image.png
栗子🌰
image.png

若字长为n+1,则原码小数的可表示范围为-1 <= x <= (1-2-n)
比原码多表示一个-1

纯整数的补码定义

image.png
栗子🌰
image.png

若字长为n+1,则原码整数的可表示范围为-2n <= x <= (2n-1)
比原码多表示一个-2n

补码快速转换到原码的方法:向编码左侧寻找最早出现的1,然后将其右边(不包括该1)的数值位全部按位取反即可。

补码表示的优点

0的表示是唯一的,即[+0]补 = [-0]补 = 0.0000。

变形补码
定义

image.png

说明

又称模4补码,双符号位的补码小数,主要用在ALU算术运算中。其中当双符号位为00时表示正,11表示负。
将[x]补的符号位与数值位一起右移时,同时保持符号位的值不变,便可实现除法功能。

移码
定义

image.png

栗子🌰

image.png

说明

常用来表示浮点数的阶码,但它只能用来表示整数。
移码其实就是在真值X的基础上加上一个常数(该常数通常取2^n),相当于X在数轴的正方向上偏移了若干单位。

特点

(1)0的表示唯一,即[+0]移 = 2n + 0 = [-0]移 = 2n - 0 = 1000…0。
(2)符号位为1时表示正,0表示负(与其他机器数的取法不同)。
(3)真值的补码与移码仅仅相差了一个符号位,换言之,补码可以通过对符号位进行取反得到对应的移码。
(4)移码的表示范围:-2n <= x <= (2n-1)。
(5)移码越大,其对应的真值越大;移码越小,其对应的真值越小。

Ps:
(1)正数的原码、反码、补码相同。
(2)原码、反码表示在数轴上对称,且0的表示有两种。
(3)补码、移码表示在数轴上不对称,但0的表示唯一,因此比原码、补码多表示一个数。
(4)整数的补码与移码符号位相反。
(5)负数的补码与反码末位相差1。

4.整数的表示

4.1 无符号整数的表示

编码的全部二进制位均为数值位,省略了一位符号位,此时默认无符号整数的符号位为正,表示范围更大。通常主存地址采用无符号数进行表示。

4.3 有符号整数的表示

将符号数值化,并置于有效数字之前。
n位带符号整数的表示范围:-2n-1 <= x <=2n-1。

  • 22
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程旧事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值