第2章 数据的表示和运算
2.1 数制与编码(1 3 5 6 9 13 15 16 17 30)
2.2 运算方法和运算电路(4 10 15 21 24 26 29 31 34 38 43)
2.3 浮点数的表示与运算
2.1 数制与编码
- T5
二进制的小数位只能表示1/2,1/4,1/8,…,1/2n,无法表示所有的十进制小数。 - T31
补码的表示范围:因为补码只有一种0(0000 0000),负数部分比原码多出来一个负128(-128)(1000 0000)
2.2 运算方法和运算电路
- T4
并行加法器(并行进位):进位同时生成,Ci=gi + pi*Ci-1
1)进位信号 g = xy(11)
2)进位传递信号 p=x异或y (01 10) - T10
循环移位:
1)带标志位CF/大循环
2)不带标志位CF/小循环:CF位还是会存储最高/最低位,易错小循环右移
3种移位运算:逻辑移位、算术移位(负数的补码和反码)、循环移位 - 15
模2补码:单符号位;模4补码:双符号位
双符号位:存储时只需要1个符号位;在运算时需要2个符号位。 - T20
原码 乘法除法:符号位不参与,都取绝对值再运算
补码 乘法除法:双符号位,且参与运算 - T21 / T24
补法:补码一位乘(Booth算法)
口诀:(辅助位-最低)①负数-x,全部右移;②0数+0,全部右移;③正数+x,全部右移
注意:①右移易错负数补码 ;②最后一次不用右移;③结果=高位+低位2N+2
机器字长为N+1,题目x和y为N+1,乘积为2N+1
x+y计算时,x和y为N+2位,加减x补或零N+1次,右移N次
(一些补充:辅助位初始为0;高位乘积在ACC,乘数/低位乘积在MQ,被乘数在x)
补码的除法:加减交替法
口诀:(被除/结果vs除)①同号商1,左移-除;②异号商0,左移+除
注意:①第一次计算不商,直接±除;②左移只移动结果;③最后一位置1;④余数=结果*2-n
机器字长为N+1,题目x和y为N+1,商为N+1
x-y计算时,x和y为N+2位,加减y补N+1次,左移N次
(一些补充:加减y补的运算比左移多一次,因为第一次不左移直接加减;余数结果乘2-n,是因为计算时左移了n次;余数最终为N+2双符号位,商最终为N+1单符号位)
总结:
1)加减x补和加减y补,都是转换为加法操作+[-x]补和+[-y]补
2)乘法加减运算的是被加数x,除法加减运算的是除数y
3)乘法结果为全部结果的2N+2—>2N+1,除法结果为右边的N+1 - T26
对于“异号相除时,够减商0,不够减商1”的理解:
口诀是:异号商0,左移+除
此处的“够减”表示:当被除数和除数异号时,被除数+除数=结果(与被除数同号),因此结果与除数异号,根据“(结果vs除数)异号商0”,够减也就商0。 - T29
加法器实现x-y时,两个输入端为(x)和(y取反),低位进位为(1)。
低位进位是将控制端Sub作为输入,当减法操作时,Sub=1,从而间接实现“取反+1”。 - T34
小端存储:(32位)0000 0001 0010 0011 0100 0101 0110 0111 B=(4B)01 23 45 67 H=19088743 D,用小端存储为67 45 23 01,首地址为67的地址。
边界对齐:从最小整数倍开始存放
机器字长默认为4B=32bit
char 1B < short 2B < int 4B long 4B;float 4B < double 8B - T38
无符号—>有符号:内容不改变,改变解释方式。
长整数—>短整数:高位截断,保留低位。
短整数—>长整数:c语言定点整数“补码存储”,符号位扩展,结果无变化。 - T43
OF:有符号位是否溢出,最高进位(异或)次高进位
CF:无符号位是否进位/借位,最高进位(异或)Sub,减法sub=1加法Sub=0