运算器
数据的表示方式
在计算机中数据的表示形式是使用0或1字符串来表示,数据要存储在计算机中需要按特定的规则进行变化,其中存储在计算机中的数值按指定的01格式表示的数据被称为机器码。计算机中常使用的码制有原、反、补、移码。
原码:真值加上符号位
反码:原码除符号位其余各个位求反(为了更加简单的得到补码)
补码:原码进行模运算之后是补码,但求补码的常用形式是反码某位加1
移码:在本书中八位移码表示是在原码的基础上再加127得到的结果(得到的结果没有负值)
各种码制的优缺点比较:
原码->优点:与真值最接近,简单易懂;缺点:使用原码计算比较复杂。
补码->优点:计算比较方便;缺点:补码不易得到。
反码->优点:反码容易得到作为原码到补码的中间过渡;缺点:对直接运算没有帮助
移码->优点:方便比较大小;缺点:对直接运算没有帮助
定点数运算
定点数的加、减法运算(主要使用【补码】来进行操作)
补码加法公式:[x]补 + [y]补 = [x+y]补
->在计算的过程中,符号位也参数运算,计算的结果含有符号位(发生溢出,不做处理)
补码减法公式:[x]补 - [y]补=[x]补 + [-y]补 = [x-y]补 (将减法变成加法进行运算)
->快速得到 :[-y]补=~[y]补 +1
(对[y]补“包括符号位求反且最末位加1”,即可得到[-y]补)
在计算中时常会出现计算结果溢出的情况,需要对溢出进行判断:
溢出的判断方式:
->无符号数:判断最高位是否有进位
->有符号数:
-》进位判别法:判断符号位和最高数据位的进位是否一致(同进表示无溢出)
-》双符号位法:将符号位扩展位为两位(00/11),计算之后看其结果(01:上溢;10:下溢;00/11:没有发生溢出)
定点乘法运算:
1)原码并行乘法:
运算规则:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。
2)间接的补码乘法运算:
运算规则:先将需要运算的数值由补码转化为原码,
再利用原码的并行乘法进行计算,
最后要将结果转为补码的表示形式
3)直接补码并行乘法:
定点数除法运算:
原码除法原理:商的符号位由两数的符号位按异或运算得到,而商的数值部分则是两个正数相除之商。
浮点数运算
浮点数加减法运算需要六个步骤:
->0操作数检查
检查两个操作数,是否有一个操作数为0
->比较阶码大小并完成对阶
使两操作数的阶码相同(小阶向大阶看齐)
->尾数求和运算
尾数进行加减运算,(使用双符号位)
->结果规格化
保证结果再0.5~1之间(尾数的符号位和最高数据位必须相异)
向左规格化:(00/11) 向右规格化:(01/10)注意阶码也应相应的移动
->舍入处理
常见的有两种舍入方法:0舍1入法、恒1法
->判断结果是否溢出
使用双符号位法进行溢出校验
以浮点数加减法为例:
运算器
运算器的功能:
->算术运算
->逻辑运算
->直送功能
附:文中图片截取自胡老师的授课PPT中