运算方法和运算器
一:数据与文字的表示方法
计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。
1、定点格式
定点表示:约定机器中所有数据的小数点位置是固定的。由于约定在固定的位置,所以小数点就不再使用记号 " . " 来表示。假设用n+1位数字表示一个定点数x,xn在最左边,并用数值0和1分别表示正号和负号,称为数符;xn-1 到 x0 表示该数的绝对值,称为尾数,则:
①定点纯整数的表示范围:0 ≤ |x| ≤ 2n - 1
②定点纯小数的表示范围:0 ≤ |x| ≤ 1 - 2-n
定点表示——机器码
一般书写所表示的数据称为真值,在计算机中通常把符号位和数字位一起编码来表示相应的数,这些编码称为机器码。常用的机器码有原码、反码、补码和移码。
2、浮点格式
浮点表示:定点数表示的数的范围有限,为了扩展数的表示范围,按照科学记数法表示数据的方式,任何一个二进制数N都可以表示成如下的格式:
N=M * 2e
M :尾数,是一个定点纯小数,决定数据的表示精度
e :指数(阶码),是一个定点纯整数,决定数据的表示范围
(1.75)10 = (1.11)2 = (0.111)2 × 201 = (0.0111)2 × 210
这样就可以把一个数的尾数和阶码在计算机的不同存储单元中分别予以存储,在这种方法中小数点的位置随阶码不同在一定范围内可以移动,这种表示数据的方法称为浮点表示法。
浮点数尾数的规格化
什么是尾数规格化?
下面举一个题来说明一下。
一直浮点数 b 的阶码和尾数分别为 010 和 0.01001,求 b 的真值。
经过计算我们发现结果如下(1B的存储空间):
我们发现最后一位 1 存不下了,只能把它舍弃,那么也就导致了它的精度降低了。
为了解决这个问题,我们引入了浮点数尾数的规格化
什么是规格化,我们联想下十进制科学计数法的表示
也就是很简单的事情,在十进制的科学计数法中,我们一般都要求最高位是一个有效数字。那么同样的在二进制中,浮点数尾数的规格化就是这个道理。
根据这个规格化,我们可以对上面的题进行优化:
下面进行一下总结,给出浮点数尾数的规格化的定义:
浮点表示——IEEE754
二:移位运算
算术移位
逻辑移位
循化移位
三:定点加法、减法运算
在计算机中进行加、减法运算其实就是转换成补码进行加、减运算。
补码加法
当负数用补码表示后,符号位作为数据的一部分一起参加运算,运算器不用考虑参加加法运算的操作数的正负以及结果的正负,任意数的加法就可以化作正数加法来作。
补码减法
当负数用补码表示后,减法的运算就可以化成加法的运算去做,这样运算器就可以只有一个加法器,不必在配一个减法器了,简化了硬件的设计。
溢出
定义:在定点数机器中,数的大小超出了定点数能表示的范围,叫溢出。
比如说:
已知 A = 15,C = 124,求[A+C]补
溢出判断
方法一:进位判别法
方法二:双符号位法
四:定点乘法、除法运算
原码乘法运算
原码一位乘法
在定点计算机中,两个原码表示的数相乘的运算规则是:
乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。
原码一位乘法的特点:
补码乘法运算
补码一位乘法
补码一位乘法的特点:
原码除法运算
加减交替法