放上计算机中的数据的表示方法
加减法运算
补码的运算:
连同符号位一起相加,符号位产生的进位自然丢掉,这里要特别注意机器数的位数,计算数的位数决定了可以存放的数据的大小,加减产生的数据的大小要在机器数可以表示的范围之内。
溢出判断:
由于同样位数的机器数的正数与负数的相加不会产出溢出,参数溢出的可能是正数与正数的相加或者负数与负数相加;
方法一:可以通过最高有效位的进位 异或 符号位进行判断,如果为 1 则为溢出。
方法二:两位符号位判断溢出,正常情况下两个符号位是一样的,0 表示正数,1 表示负数。
移位运算:数据相对于小数点移动 n 位
左移:绝对值扩大为原来的两倍
右移:绝对值缩小为原来的二分之一
算术移位:有符号数的移位,符号位不变
逻辑移位:无符号数的移位,符号位发送变化
乘法运算
乘法运算可用加和移位实现
n = 4, 加 4 次,移 4 次
普通乘法:
1. 符号位单独处理,异或电路实现
2. 乘数的某一位是否为 1 觉得是否相加
3. 乘积的位数的扩大一倍
改进的乘法:
根据乘数的最低位,决定部分积(初始为 0)是否加上被乘数,得到新的部分积
然后将部分乘积和乘数同时右移一位
当移位计数器 C 的次数为 n 时,Q 中存放的乘数的数值位都被移掉
S 为符号位的计算值
Gm 为乘法标志
移位和加控制根据乘数的第 n 为判断是否打开控制门,送入被乘数 X
最后的结果保存到了 A Q 寄存器中
除法运算
x/y = x0⊕y0[x*/y*]
1. 上商 n+1 次
2. 第一次上商判断是否溢出,减去被除数的补码(即加上 [-y*] 的补码),得到的余数为负数,则不溢出
3. 移 n 次,加 n+1 次加法,
余数为正,上商为 1,余数逻辑左移一位,加上 [-y*] 的补码,得到新的余数
余数为负,上商为 0,余数逻辑左移一位,加上 [y*] 的补码。
A:ACC 存放被除数 与 余数
Q:商
X:除数的正负补码
C:计数器
S 为符号位的计算值
Gd 为除法标志
V 为是否发生溢出