运算方法和运算器(重点)
-
B二进制(binary), D十进制(decimal), H十六进制(hexadecimal)
纯小数和纯整数表示范围
-
设机器字长n+1位,规定最高位(第n+1位)为符号位
-
纯小数最大范围中的可理解为小数部分全为0的“1”,再减去一个最后一位为1的"$$2^{-n$$"
-
数值数据:定点、浮点
浮点数表示法
符号位S,阶码E,尾数M
IEEE754标准
-
定点表示法:
-
纯整数,纯小数,定点整数,定点小数
-
小数点位置固定不变
-
浮点数规格化表示:尾数的值不为0时,尾数域的最高有效位为1
-
32位单精度浮点数:符号位S占1位,阶码E占8位(范围),尾数M占23位(精度),基数固定为2
-
IEEE754标准,M隐去1(规定尾数域最高有效位为1(若尾数不为0),无需存储),指数真值e=阶码E-127(32位) e=E-1023(64位)
-
特殊规定
-
表示NaN(阶数全1,尾数不为0),$$\pm\infin$$(阶数全1,尾数为0),0(阶数尾数都为0),规格化数,非规格化数(阶数为0,尾数不为0)
-
-
机器码和真值转换例子
-
浮点数表示的范围比定点数大
-
-
-
数的机器码表示
真值和机器码
移码
-
真值: -127 真值的二进制表示 -0111 1111
-
机器数/机器码:原码、反码、补码、移码
-
正数的原码反码补码均相同
-
补码
-
模modulo, 区间总长
-
整数模$$2^$$,小数模2
-
负数:固定符号位,补码为取反加1
-
方便加减运算
-
-
$$[x]_移 = 2^n + x$$ ,移码和补码尾数相同,符号位相反
-
x为真值,右式为移码(机器码)
-
意思就是真值的二进制表示后最高位多添一个1
-
偏移值常数可以任意,如IEEE754标准为127,非2的幂次
-
-
-
方便指数大小对比,通常用于表示浮点数的阶码
-
-
-
字符与字符串表示方法
-
ASCII码:最高位为0,余下7位表示128个编码
-
字符串:连续的一串字符,占用主存中连续的多字节,每个字节存放一个字符
-
-
汉字表示方法
-
输入码
-
数字编码:国标区位码,二维数组
-
拼音码:输入重码率重
-
字形编码:五笔
-
-
汉字内码,用于存储,采用两字节表示,最高位均为1
-
字模码(输出):字模矩阵,汉字库,存储空间大
-
-
校验码
-
奇偶校验码:检查出奇数位错,且不能纠正错误,奇数个1异或结果为1
-
奇校验:使得最后异或结果为1,奇数个1
-
偶检验:使得最后异或结果为0,偶数个1
-
二维码:校验码,纠错码
-
-
定点加法、减法运算
-
如果结果为负数,从补码转为二进制真值的时候记得求一次补
-
补码规则:
-
证明
-
-
补码减法规则
-
从该数补码求其相反数补码方法:
溢出
-
正溢,负溢
异或结果为1说明产生溢出
-
双符号位判断法:
-
sf1,sf2分别是高符号位(始终正确)和低符号位(可能变化)
-
-
单符号位判断法:
-
cf,c0分别是符号位产生的进位和最高有效位产生的进位
-
符号位产生进位而最高有效位没有产生进位,负溢
-
最高有效位产生进位而符号位没有产生进位,正溢
-
-
例题
-
移位过程中,符号位不变
-
补码右移是算术右移,补1
-
门电路图形符号
全加器FA
-
全加器Full Adder (FA),行波进位加法器(串行)
-
并行加法器
定点数乘法运算
不带符号的阵列乘法器
-
符号数单独处理,异或得到结果
-
并行
-
被加数产生部件:m*n个与门直接算得
-
被加数求和部件:求和每列被加数
-
-
被加数矩阵
-
同列幂次相同
-
每行有左移效果
-
-
被加数求和部件:全加器实现
带符号的阵列乘法器
-
对2求补器
-
E为控制信号,为0代表操作数为正数,为1则是负数
-
求补方法:从右往左找出第一个"1",自己和右边的数位不变,以左的每一个数位取反
-
-
逻辑:算前求补-不带符号乘法-算后求补
定点数除法运算
如果是小数除法:被除数的绝对值应小于除数的绝对值(要求商始终小于1)
符号位单独处理,异或运算
恢复余数法
-
基于补码进行加减法和移位
移位规则
-
符号位不变
-
"1."代表符号位
-
补码是算术右移
-
例子演算
-
减y (就是加上[-y]的补码),看余数正负
-
不够减商0并恢复余数,够减直接商1
-
余数左移,重复第一步
-
商做了五次运算,首位为0,商小于1,即说明被除数是小于除数的,合法
-
加减交替法(不恢复余数法)
-
推演
-
例子演算
-
余数为正,商1,下次余数左移做减法
-
余数为负,商0,下次余数左移做加法
-
商计算5次,首位为0,即商小于1,说明被除数小于除数,合法
-
-
数值位为n位时,只做n+1步操作,对最后余数要处理(恢复余数,反正此时商0,结果正确的),其真实值还要算上位移量
可控加法/减法单元CAS
CAS controllable adder subtractor
-
从右往左算,进位也是从右往左进位
-
可控做加法还是做减法,那么就可做由加减交替法实现的定点数除法运算了
-
阵列除法器
-
阵列除法器:加减交替法的并行实现
-
$$q_4=0$$是因为规定被除数小于除数,商小于1,不够除
-
每行最左边的CAS存放的是被除数和除数补码符号位的加减法(记录最高位的进位情况,即$$C_{i+1}$$)
-
-
模拟阵列除法器运行例子
-
加减交替法 + 除数右移
-
商跟除数位数相同,次数是位数加1
-
定点计算器的组成
-
逻辑运算
-
逻辑非:按位求反
-
逻辑加:按位求或
-
逻辑乘:按位求与
-
逻辑异:按位加,按位异或
-
多功能算术/逻辑运算单元ALU
-
先行进位公式
-
规律:g3 -> g2p3 -> g1p2p3 -> g0p1p2p3 -> p0p1p2p3Cn
-
从左往右g下标不断减小,然后右边填上p下标从大到小,最后g没有的时候补上Cn
-
-
ALU的逻辑结构
-
一个ALU由多片FA和函数发生器组合而成,来支持多位二进制位数
-
i:一片电路(一片ALU,多个FA和函数发生器组成)的二进制位数
-
n:多片ALU时,每片电路的进位输入
-
-
ALU逻辑表达式
-
由真值表知$$Y_i = X_iY_i$$
-
-
先行进位公式
-
进位发生输出$$G$$
-
进位传送输出$$P$$
-
最高位进位输出$$C_{n+4}$$
-
-
ALU逻辑电路图 (74181ALU)
-
M是控制端
-
M=0时,做算术操作
-
M=1时,做逻辑操作
-
-
-
74181ALU 算术/逻辑运算功能表
先行进位部件CLA
carry look ahead adder
-
设计16位ALU,使用多片ALU
-
串行
-
利用CLA并行
-
内部总线
-
三态电路
-
高阻态,相当于断开
-
-
内部总线,外部总线
-
单向总线,双向总线
-
三种总线结构
-
单总线:
-
双操作数分时经总线进入锁存器A和B,结果也通过单总线送回。
-
特点:控制电路简单,操作速度比较慢。
-
-
双总线
-
两操作数通过各自的总线送加法器运算,结果通过其中一总线送回。
-
操作速度较快
-
-
三总线
-
两操作数和操作结果通过各自的总线传送。
-
特点:操作速度快,但所需总线多。
-
总线旁路器:使传送操作经它直接输出,速度快
-
-
浮点数运算方法和浮点运算器
-
浮点数的规格化表示
-
尾数域最高位为1(纯真值模拟过程)
-
尾数M真值 为0.1xxxx (这里0不是符号位,是数值位)
-
-
机器码的规格化形式:将首位当作符号位
-
对规格化数规格化处理
浮点数加法、减法运算
-
0操作数检查
-
比较阶码大小并完成对阶
-
尾数右移,损失最低位,误差最小(阶码变大),即小阶向大阶看齐
-
-
尾数加减运算
-
结果规格化
-
舍入处理
-
溢出处理
-
模拟例子
-
浮点数 用阶码,尾数分开表示(均以补码存储)
-