计算机组成原理—只懂四则运算的计算机
与构筑代数系统一样,我们在构筑计算机的基本运算时,需要考虑三个部分,首先集合类,然后是建立在该集合类上的运算,最后是这些运算在集合类上是封闭的。
r进制的集合类
我们首先需要考虑的是数字的表示方式,包含二进制,八进制,十进制,十六进制
r转10:$\sum_0^n$A$\times$$r^{n-1}$
10转r:整数求模取余,小数乘r取进位
2转8/16:3/4位一组,每组单独转换为相应的进制,前后补缺
8/16转2:每一位单独转换为3/4位2进制
BCD码
8421码
四位数,每位权重分别为8,4,2,1—本质上是以16进制来进行储存,但要将多的6位舍弃掉
$(XXXX)_8(XXXX)_4(XXXX)_2(XXXX)_1$
其中XXXX取0000-1001->0-9 表示四位数字
计算时,若超出范围,即冗余状态,则+0110(6),通过进位修正—
余3码
8421码+(0011),前后空出3格的位置
2421码
四位数,每位权重分别为2,4,2,1—本质上是以4进制来进行储存,首位用于区别是否大于4,是则取1,反之则取0。
$(XXXX)_2(XXXX)_4(XXXX)_2(XXXX)_1$
数字的表述
由于小数的存在,可以灵活表示整数与小数
定点数
无符号数
通常为整数
整个机械字长的全部二进制均为数值位,无符号位
表示范围:8位二进制,即$2^8$种不同的状态
有符号数
整数:符号位+数值位+(隐含的小数点)
小数:符号位+(隐含的小数点)+数值部分(尾数)
四种表示方式 $[x]_原 [x]_反 [x]_补 [x]_移$
原码:尾数表示真值绝对值,符号位"0/1"表示"正/负",0有+0,—0
反码:正数和原码一致,负数除符号位以外,其余的0 1互换,0有+0,—0
补码:正数和原码一致,负数的补码是反码末位+1,0只有一种表示,1,00000000 表示$-2^7$
补数:负数取模变正,正数取模变负,从而将减法变加法
移码:只用于整数,补码符号位取反即可,可以表示$-2^7$(用于对比整数大小)
补码的应用:
加减法——用补码将减法变加法——模取余舍高
浮点数
科学计数法表示特别大的数字
阶码E与尾数M构成浮点数
阶码表述量级,反应浮点数的表示范围以及小数点的实际位置,用补码或移码表示
尾数表示精度,位数反应用原码或补码表示
N=$r^E$$\times$M