王道408---CO---数据的表示和运算必会知识点

一、进制转化的补0问题

1111000010.01101转化为8进制:
整数位: $\underline{001} $ \(111\) \(000\) \(010\)  高位补零
小数位: \(011\) \(\underline{010}\)  低位补0

二、机器数、原码、反码、补码、移码对应表

img
img

www

移位的值的计算实际上是由数值的补码加上偏置值的补码得到的,如果我们想反推数值,则可以通过使用移减去偏置值的补码

三、标志位(CF、SF、ZF、OF)

1、OF(overflow flag) : 溢出标志位

溢出标志位 OF = 1 表示带符号整数运算时结果发生溢出。对于无符号整数运算,OF没有意义。
逻辑上=最高位的进位⊕次高位的进位

2、ZF(zero flag) : 零标志位

ZF = 1表示结果为0,无论是有符号数还是无符号数,ZF都有意义

3、CF(carry flag): 进/借位标志位

表示无符号整数数加/减运算时的进位/借位。对于有符号数的整数运算没有意义
CF = 最高位的 进位/借位 ⊕ Sub信号 (也称为cin信号)
Sub信号:加法是0,减法是1
(算是无符号数的溢出判断吧~)

4、SF(symbol flag) : 符号标志位

结果为负,即符号位为1时SF=1,否则为0.
SF数值上等于补码的第一位,也就是符号位

三、ALU的核心是带标志加法器

四、移码与补码的关系:整数补码的数值部分不变,符号取反即得整数移码。反之亦然

五、模4补码

1、模4补码有模2补码的所有优点,且更容易检查溢出问题
2、模4补码存储时只需要一个符号位
这是因为任何一个正确的数值,模4补码的两个符号位总是相同的。只在把两个模4补码的数送往ALU完成加减运算时,才把每个数的符号位的值同时送到ALU的双符号位中,即只在ALU中采用双符号位。

六、补码加减法的溢出判断

1、采⽤⼀位符号法

参与操作的两个数符号相同,结果⼜与原操作数符号不同,则溢出

2、采⽤⼀位符号位根据数据位的进位判断情况判断溢出

若符号位的进位和最⾼数位的进位相同,则没有溢出

3、看CF/OF位是否为1

七、乘法的溢出判断

1、n位乘以n位,若用2n位保存乘积,不会溢出
2、n位乘以n位,若用2n位保存中间结果,最后截取末尾n位作为最后结果,可能会溢出

举个例子方便理解:
【例】32 位补码 7FFF FFFFH 乘 2 的 64 位中间乘积结果是多少?最终结果需存入 32 位寄存器中,请问溢出了吗?

【解】中间结果是 0000 0000 FFFF FFFEH,由于前 33 位不全为 0 或 1,所以发生了溢出。

对于有符号数来说,7fff ffff 与2本来是正数,相乘之后变为了负数,很显然不符合常理,故发生了溢出
而对于无符号数来说,7fff ffff 与 2相乘得到FFFF FFFE 合情合理,故不溢出

3、手算判断溢出
带入十进制计算乘法结果,判断该结果是否超出了n位所能表示的范围,若超出,则溢出。
4、机器判溢出
两无符号数乘法,n位乘n位,用2n位保存中间结果,仅当前n位都是0时,才不溢出。
两个有符号补码乘法:n位乘n位,用2n位保存中间结果。仅当前n+1位全1或全0时,不溢出

八、除法的溢出

除法的溢出判断注定是浮点数的除法,大纲不要求,直接过~

九、补码一位乘(Booth算法)

img
注意: 最后一步后不用再移位

十、浮点数的格式

img
数符、阶符、阶码、尾数

十一、我们一般使用定点原码小数表示浮点数的尾数部分,用移码表示浮点数的阶码部分

十二、浮点数的溢出(上溢,下溢)和范围

img

十三、原码、补码的规格化

img
简言之,对于原码,只需要看小数点后第一位是否为1
对于补码,只需要看符号位和小数点第一位是否相反

十四、舍入

1、0舍1入

右移时被丢掉的最高位是0则直接舍去(包括0之后的);如果是1则舍去并在最低有效位上

2、恒置1法

只要数位被丢掉,一律在最低有效位上加1.

3、截断法

直接截取所需位数,丢弃后面所有位

十五、浮点数加减法运算过程

img

十六、阶乘的全1全0结构被另做他用:

1、全0阶码全0尾数: \(+0/-0\)

2、全1阶码全0尾数: \(+\infty\) \(/\) \(-\infty\)

3、全0阶码非全0尾数: 用做非规格化小数

4、全1阶码非全0尾数: 触发异常

故我们在某浮点数格式可允许的最大范围时要排除掉这两位

十七、IEEE 754标准

1、短浮点数与长浮点数结构

img

2、阶码偏置值:短浮点数是127,长浮点数是1023

3、由于短浮点型阶码的偏置值为127,故补码 1000 0001(补码为-127) 对应的短浮点型阶码的偏置值为 0000 0000 补码 ; 补码1000 0000(补码为-128) 对应的短浮点型阶码的偏置值为 1111 1111

故短浮点数阶码的范围是 [-126,127]

4、隐藏位

十八、进位信号g和进位传递信号p (p48-T4)

\(g=X_iY_i(X_iY_i是 两个加数)\)
\(p = X_i⊕Y_i\)
\(X_iY_i\)都为1时,\(G_i\) = 1,产生进位\(C_{i+1} = 1\),当Xi和Yi有一个为1时,\(P_i = 1\),传递进位\(C_{i+1} = C_i\)(其中Ci是输入,\(C_{i+1}\)是输出)
当这俩都为0时,\(C_{i+1}\)即为0

十九、正数的反码、补码、原码一样,都是不变的

二十、规格化 (p66-T20)

当浮点数的基数为2时,原码规格化数的尾数最高位一定是1,当基数尾数为4时,原码规格化形式的尾数最高两位不全为0

二十一、舍入 (p66-T21)

定点数没有舍入的概念,浮点数的舍入只有两种情况: 对阶、右规

二十二、字长 (p53-T7大坑)

字长是指计算机进行一次整数运算所能处理的二进制数据位数,通常与CPU的寄存器位数、加法器有关。

二十三、阵列乘法器执行乘法指令只需要一个时钟周期

二十四、一个疑问

关于负数在算术左移过程中,是否会覆盖其符号位,迷惑了好久了
\(---------------8·13号补充---------------------\)
ps: 看p166-T10(3) 答案给的8290H,应该是要覆盖的

posted @ 2023-08-20 18:28  TLSN  阅读(663)  评论(0编辑  收藏  举报