计算机组成原理——运算方法与运算器
1月 04, 2019
917
数值数据的表示
- 计算机中的数据表示,包括定点数、浮点数、字符、十进制数的表示方法 ;
- 原码、补码、反码、移码等码制之间的关系以及各码制之间真值数的转换;
- 原码求补码的方法:
正数,不变,即原码=补码
负数,符号位不变,数值为取反并加 1 - 补码中零只有一个:0.0000000 补码 1.0000000 表示负 1
原码
- 如果机器字长为 n,那么一个数的原码就是用一个 n 位的二进制数,其中最高位为符号位:正数为 0,负数为 1。剩下的 n-1 位表示该数的绝对值
- 正数的原、反、补码都一样,0 的原码跟反码都有两个,因为这里 0 被分为+0 和-0。
反码
- 反码就是在原码的基础上,符号位不变其他位按位取反(就是 0 变 1,1 变 0)就可以了
补码
- 补码也非常的简单,就是在反码的基础上按照正常的加法运算加 1
- 负数的补码这么记更简单: ~符号位不变,其他的从低位开始,直到遇见第一个 1 之前,什么都不变;遇见第一个 1 后保留这个 1,以后按位取反~
- 除此之外,还可以用 [1000_0000]补 表示-128:
(-1) + (-127) = [1000_0001]原 + [1111_1111]原 = [1111_1111]补 + [1000_0001]补 = [1000_0000]补
-1-127 的结果应该是-128,在用补码运算的结果中, [1000_0000]补 就代表-128。
注意,-128 并没有原码和反码表示。
移码
- 移码最简单了,不管正负数,只要将其补码的符号位取反即可。
数的浮点表示法
阶码决定范围,尾数决定精度。
- 浮点数的规格化
为了使浮点表示法有尽可能高的精度,采取的措施之一是增加位数,或者在字长一定的情况下将阶码和尾数所占的位数协调好,措施之二是采用浮点数规格化表示,就是通过调整界面,使其尾数满足以下形式:
原码规格化后: 正数为 0.1×……× 的形式,负数为 1.1×……× 的形式。
补码规格化后 : 正数为 0.1×……× 的形式,负数为 1.0×……× 的形式。
非数值数据的表示
- ASCII 码有 7 位,总共 128 个,最高位区分是否是汉字
- 区位码(十六进制)+ 2020H = 国标码
- 机内码 = 国标码 + 8080H
- 一个汉字占 2 个字节 16 位机内码。
定点加减法运算
溢出判断
- 双符号位法
- 进位判断法