计算机的运算方法
基础知识
一个负数加上 “模(mod)” 即得该负数的补数一个正数和一个负数互为补数时,它们绝对值之和即为模数当真值为负时,补码可用原码除符号位外每位取反,末位加1求得当真值为负时,原码可用补码除符号位外每位取反,末位加1求得 结论:由于0在补码中只有一种表示形式,故补码比反码和原码可以多表示一个负数由y补求-y补 补码与移码只差一个符号位规格化数
将尾数的最高位为1的浮点数称为规格化数计算机中规定浮点数的尾数用纯小数表示,即0.尾数决定正负,阶码决定大小 算数移位规则 整数和小数补码的公式求法
1.整数
n为整数表示成二进制以后的位数(除符号位以外)n=1时,整数的补码叫做变形补码 2.小数 -1.0000的补码和原码 算术移位和逻辑移位的区别
算术移位:有符号数的移位逻辑移位:无符号数的移位
逻辑左移 :低位添 0,高位移丢逻辑右移 :高位添 0,低位移丢
加减法运算
补码加减法
[A+B]补=[A]补+[B]补;[A-B]补=[A]补+[-B]补注意事项:连同符号位一起相加,符号位产生的进位自然丢掉 溢出判断
一位符号位判溢出
最高有效位的进位 异或 符号位的进位 = 1,则溢出 两位符号判溢出
结果的双符号位 不同,则溢出注意:最高符号位 代表其 真正的符号
乘法运算
笔算乘法
原码的运算逻辑移位为什么2的-1次是逻辑移位(逻辑右移)?
因为符号位单独处理,剩下的就是无符号数 原码乘法—> 符号位 和 数值位部分 分开运算
原码一位乘
乘积的符号位单独处理:异或数值部分为绝对值相乘每次用乘数的末位判断加被乘数还是加0过程与笔算乘法完全相同右移采用逻辑右移 原码两位乘
乘积的符号位单独处理:异或数值部分为绝对值相乘每次用乘数的2位判断原部分积是否加和如何加被乘数 -
计算机只能判断2的幂次,加3倍的被乘数如何处理?1+2呢?还是4-1呢?
答案是4-1,先减1倍的被乘数,再加4倍
利用标志位,标志位为0,加4倍等价于现在的标志位为1,加1倍 右移采用补码右移 补码乘法
补码一位乘(连同符号位一起右移) -
被乘数任意,乘数为正被乘数任意,乘数为负被乘数任意,乘数任意(booth算法) Booth算法
除法运算
原码除法
恢复余数法
运算规则
余数 Ri>0 上商 “1”, 2Ri – y*余数 Ri<0 上商 “0”, Ri + y* 恢复余数
不恢复余数法(加减交替法)
运算规则
上商“1” 2Ri – y*上商“0” 2Ri + y* 补码除法(加减交替法)
上商规则
案例
浮点四则运算
浮点加减法
对阶原则:小阶向大阶看齐规格化原则
原码:不论正数,负数,第一数位为1补码:符号位和第一数位不同左规和右规
左规:尾数左移 阶码减右规:尾数右移 阶码加
当尾数溢出时,即尾数出现01. ×××或 10. ×××时,右规 例题
浮点乘除法
阶码采用补码定点加减法尾数乘除同定点运算规格化