一. 定点数运算
1. 机器数的加减运算
在计算机中,通常只设置加法器,减法运算要转化为加法运算来实现。
机器数的加减运算一般用补码来实现. 其运算方法如下:
X+Y -> [X]补码+[Y]补码
X-Y ->[X]补码-[Y]补码
eg : 8-6(采用8位定点整数)
8-6 -> [8]补码+[-6]补码 ->[0000 1000]补码+[1000 0110]补码 -> 0000 1000 +1111 1010 = 1 0000 0010
运算结果后的8位的真值是 +2 ,
溢出: 运算结果超过了字长的表示范围时,则产生了溢出
计算机运算溢出检测机制,采用双符号位,00表示正号,11表示负号。如果进位将会导致符号位不一致,从而检测出溢出。结果的符号位为01时,称为上溢;为10时,称为下溢。
典型案例
设x=127,y=5,字长8位 , 计算x+y
[x]补+[y]补=00111 1111 +
00000 0101=
01000 0100 01代表溢出
(1000 0100)补码 => (1111 1100) 原码 => - (64+32+16+8+4) = -124
在确定了运算的字长和数据的表示方法后,数据的范围也就确定了。一旦运算结果超出所能表示的数据范围,就会发生溢出。发生溢出时,运算结果肯定是错误的。当两个同符号的数相加(或者是相异符号数相减)时,运算结果有可能产生溢出。常用的溢出检测机制主要有进位判决法和双符号位判决法。双符号位判决法若采用两位表示符号,即00表示正号、11表示负号,则溢出时两个符号位就不一致了,从而可以判定发生了溢出。
2. 机器数的乘除运算
>纯软件方案
>通过增加少量的来实现左右移位的逻辑电路来实现
>通过专用的硬件阵列乘法器(除法器)来实现
二. 浮点运算
1. 浮点数加减运算
浮点数加减法有五个基本步骤: 对阶(小阶向大阶看齐,尾数向右移),尾数加减,规格化, 舍入和检查
2.浮点数乘除运算
浮点数相乘, 阶码相加,尾数相乘, 数符异或运算求出
浮点数相除, 阶码相减, 尾数相除, 数符异或运算求出