一:概述
补码的主要作用:
两个有符号数可以直接相加
加减运算基本思路:
加减运算基本思路:
1.转换成x+y的形式
2.计算[x]补+[y]补
加法运算
设机器字长为8位(含1位符号位),A=15,B=-24,求[A+B]补和[A-B]补
[A+B]补=[A]补+[B]补=00001111+11101000=11110111
原码:10001001 真值:-9
[A-B]补=[A]补+[-B]补=00001111+00011000=00100111
注:[-B]补等于B的补码连同符号位取反加1
例题:C=-124,求[A+C]补和[B-C]补
逻辑表达式:
与:如ABC,表示A与B与C
仅当A,B.C均为1时,ABC为1
A,B ,C中有一个或多个为0,则ABC为0
或:如A+B+C,表示A或B或C
仅当A,B,C均为0时,A+B+C为0
当且仅当A,B,C中有一个或多个为1,则A+B+C为1.
非:
若A为1,则A取非0
若A=0,则A取非为1
判断溢出:
方法一:
方法二:
采用一位符号位,根据数据位进位情况判断溢出
符号位的进位C5 最高数位的进位C1
正溢出 0 1
负溢出 1 0
即C5和C1不同时有溢出
处理“不同”的逻辑符号:异或⊕
溢出逻辑判断表达式V=C5⊕C1
若V=0,表示无溢出;V=1,表示有溢出。
异或逻辑
0⊕0=0
0⊕1=1
1⊕0=1
0⊕0=0
方法三 双符号位
正数符号为00,负数符号为11
记两个符号位为S1S2,则V=S1⊕S2
若V=0,表示无溢出;若V=1,表示有溢出。
[A+B]补=[A]补+[B]补=00001111+11101000=11110111
[A-B]补=[A]补+[-B]补=00001111+00011000=00100111
采用双符号位的意味运算;低位符号位参与移位,高位符号位代表真正的符号。