一、定点数的原码、补码、反码和移码的表示和相互转换方法
1、原码(true form)是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
2、反码通常是用来由原码求补码或者由补码求原码的过渡码。
3、补码是由原码变为反码,再由反码转换而来的,所以没有明确的定义。
4、移码:是对补码的符号位取反而得到的,正数、负数的移码计算方式相同,将补码的符号位取反,其余位不变。
正数的原码为:01101001
则其反码也为:01101001
则其补码也为:01101001
则其移码应为:11101001
负数的原码为:11001101
则其反码应为:10110010
则其补码应为:10110011(再反码的末位加1)
则其移码应为:00110011
二、补码加减运算以及溢出的概念与检测方法
(1)补码加减法运算的规则:
[X+Y]补=[X]补+[Y]补
即补码的和等于和的补码
[X-Y]补=[X]补+[-Y]补
这个是将减法转换成加法的形式这也是使用补码在计算机中进行减法运算的好处可以将减法转换成加法这样就会有助于计算机的运算。
补码运算的两个结论:
1.用补码表示的两个数进行运算得到的结果也是补码
2.符号位和数值位一样参与运算
(2)溢出:对补码进行加法运算容易导致溢出,溢出有三种判断方法,核心逻辑均为两个同号的数相加最终得到了异号的结果。
溢出的判断一共有三种方法:
1.根据符号位进行判断
当符号相同的两个数进行运算算出的得数跟原来的两个数符号位不相同则发生溢出。
fa fb表示两个操作数的符号位 fs表示运算结果的符号位 fs和fa,fb不一致则发生了溢出
2.根据符号位进位和数值位最高位进位来判断
由于在运算过程中符号位也是在参与运算的,所以符号位也会发生进位。如果符号位和数值位都没有进位或者都有进位那么我们说这个是没有溢出的否则我们说这个是发生溢出了。
3.最后一个也是最重要的一个采用双符号位的方式来进行的判断
我们知道在补码中是存在一个符号位的,这里采用双符号位的方式也就是“变形补码”的形式。原补码的符号位是什么这个双符号位就是什么例如:补码符号位是1那么双符号位就是11反之亦然。在运算过程中双符号位也是参与运算的,如果算出结果的双符号位是不一致的那么我们说这个是溢出的如果算出的双符号位是相同的那么我们说这个是没有溢出的。
三、原码和补码的乘法运算方法
1、原码的乘法
所谓原码和补码的乘法在本质上都是参考十进制的乘法:核心都是移位相加
参与运算的数由两部分组成:符号位和数值位
对于符号位,是要进行单独处理
对于数值位,取绝对值进行计算
原码的乘法很简单,如果是0,就加0,如果是1,就加原数
然后再右移,注意是ACC+MQ那一行整体右移
低位的(就是最右边的)直接舍弃,因为已经乘过了
高位的(就是最左边的)添0
整个过程:加法N次,移位N次
2、补码的乘法
补码的乘法比较有意思
补码的乘法同样是移位相加,但是补码中ACC加的东西比较特殊
辅助位:就是最后一位
MQ中的最低位:就是倒数第二位
倒数第一位-倒数第二位=1,ACC+[x]补
倒数第一位-倒数第二位=0,+0
倒数第一位-倒数第二位=-1,+[-x]补
最后再对符号位和符号位后面的一位进行比较,再进行一次加法
注意:这里补码采用的是双符号位
在下面的补码的除法中,同样也是采用的双符号位
四、浮点数的表示和规格化表示方法
(1)浮点数表示法是指以适当的形式将比例因子表示在数据中,让小数点的位置根据需要而浮动。这样,在位数有限的情况下,既扩大了数的表示范围,又保持了数的有效精度。
(2)规格化:规定尾数的最高数位必须是一个有效值。非规格化浮点数要进行规格化操作才能变成规格化浮点数。
五、浮点数的运算方法
1、“对阶”操作---- Ex=Ey
求 △E=E-min(Ex, Ey); E=max(Ex, Ey),△E≠0
将阶码小的数的尾数右移△E位
原码:符号位不参加移位,尾数数值部分高位补0
补码:符号位参加移位,并保持原符号位不变
2、尾数的加减运算
执行对阶后,两尾数进行加/减运算,得到两数之和/差。
3、规格化操作
双符号位的原码规格化尾数,其数值的最高位为1
双符号位的补码规格化尾数,应是00.1xx…x或11.0xx…x
规格化规则:
如果结果的两个符号位的值不同,表示加减法运算尾数结果溢出。此时将尾数结果右移1位,阶码E+1,称为向右规格化,简称“右规”。
如果结果的两个符号位的值相同,表示加减法运算尾数结果不溢出。**若最高数值位与符号位相同,此时尾数连续左移,直到最高数值位与符号位的值不同为止。**同时 E-m(移位的位数) ,称为向左规格化,简称“左规”。
4、舍入
执行右规或对阶时,尾数低位上的数值会移掉,使数值的精度受到影响。常用0舍1入法。
当末尾移掉的最高位为1时,在尾数的末位加1.如果加1后又使尾数溢出,则要再进行一次右规。
5、检查阶码是否溢出
若阶码下溢,运算结果为机器零(通常将阶码和尾数全部置“0”);若上溢,则置溢出标志。
六、ALU的设计方法和工作原理
设计的8位ALU能够实现基本的按位与、按位或、补码加法和补码减法运算,其中按位与、或操作直接按位独立进行即可,加法利用加法器不同输入及进位对应不同输出,补码减法需要取反后最低位加1。但如果要进行负数加负数的操作需要将其中一位提前处理为补码再进行运算。