一.码制
计算机并不能直接使用二进制数运算,更不能使用十进制数运算,必须先转为其可用的码制数
为简化理解,以下假定机器字长为4位,其他字长同样满足以下结论
(1)真值(记为N)
符号没有被数码化的二进制数称为数的真值,即我们平时直接书写的二进制数
(1)原码(记为)
为简便二进制数的符号运算,在二进制数前加1表示负数,加0表示正数,加符号位后的数称为原码
规定:+0的原码为0000...,-0的原码为1000...
如:N=+101,=0101;
N=-101, =1101;
(2)反码(记为)
反码是计算机编码的中间状态,实际上无应用场景,正数的反码为原码不变,负数的反码为原码除符号位都取反(0变1,1变0)
+0的反码为0000...,-0的反码为1111...
如:=0101,=0101;
=1101,=1010;
(3)补码(记为)
补码是计算机能用于直接运算的码制,正数的补码为反码不变,负数的补码为反码的最后一位+1(记得按2进位)
+0、-0的补码均为0000...
如:=0101,=0101;
=1010,=1011;
二.运算
(1)求相反数
所有位取反,最后一位+1即可(记得按2进位)
如:=1011,=0101
(2)加减法
(3)溢出检查
溢出现象:计算中产生了超出机器字长的结果
如:
机器字长为4位,10011的第一个1超出被计算机舍弃,造成溢出,产生错误的0011结果
判断方法:同号相加结果成异号(如0开头变1开头),即为溢出
处理方法:在结果后加注“溢出”即可
注:乘除法在不同机器中有不同解决方法,这里不作介绍
溢出的解决方法将在计算机组成原理中整理