运算方法
有符号数的运算规则
正数
正数的补码、反码、移码和原码相同
负数
用‘0’表示‘正’,用‘1’表示‘负’
负整数
补码:按位取反,末位加1,符号位不变
反码:按位取反
移码:补码的反符号位
负小数
补码:整数部分为1,按位取反,末位加1,符号位不变
反码:整数部分为1,按位取反
移码:整数部分为1,补码的反符号位
【y】补和【-y】补的关系
连同符号位在内,每位取反,末位加1
定点数和浮点数的区别
定点数受字长的限制,超出范围会有溢出。浮点数的精度由尾数决定,数的表示范围由阶码决定。
算术移位规则(有符号数)
正数
无论是左移还是右移,添补代码均为0
负数
原码:无论是左移还是右移,添补代码均为0
补码:左0右1
反码:无论是左移还是右移,添补代码均为0
逻辑移位规则(无符号数)
逻辑左移时,高位移丢,低位添0,逻辑右移时,低位移丢,高位添0
无符号数的扩展
只需在高位添0
定点整数的符号扩展
正数:添0
负数:原码添0、反码和补码添1
定点小数的符号扩展
正数:添0
负数:原码和补码0、反码添1
无符号数和有符号数的转化
先将数字用原码表示出来,然后转化为补码
无符号数转化为有符号数:将第一个数字当成符号位
有符号位转化为无符号数:将符号位当成数字
加法和减法运算
现代计算机中,都采用补码作加减法运算
加法
整数 [A]补+[B]补=[A+B]补(mod 2^(n+1))
小数 [A]补+[B]补=[A+B]补(mod 2)
减法
整数 [A-B]补=[A]补+[-B]补(mod 2^(n+1))
小数 [A-B]补=[A]补+[-B]补(mod 2)
连同符号位一起相加,符号位产生的进位自然丢掉
溢出
正数:
符号相同的两个数相加才可能出现溢出
符号不同的两个数相加是不会溢出的
负数:
符号不同的两个数相减才可能出现溢出
符号相同的两个数相减不会溢出
判断溢出的方法
无论加法还是减法。只要实际参加操作的两个数(减法时即为被减数和“求补”以后的减数)符号相同,结果又与原操作数的符号不同,即为溢出
两位符号位判断溢出
两位符号位不同时,表示溢出,否则,无溢出
高位(第一位)符号位永远代表正真的符号
“10”符号位为1,0表示负溢出
“01”符号位为0,1表示正溢出
数的定点表示和浮点表示
定点表示
浮点表示
浮点数的一般表示形式
浮点数的表示范围
浮点数的规格化
r = 2,尾数最高位为1
r = 4,尾数最高2位不全为0
r = 8,尾数最高3位不全为0
加法和减法运算的例子
判断溢出的例子
两位符号位判断溢出的例子