数字电路中的原码,反码,补码的算法

2019-04-13 13:34发布

引进机器数的3种表示法:原码、补码和反码,是将符号位和数值位一起编码,机器数对应的原来数值称为真值
1.原码表示法
原码表示方法中,数值用绝对值表示,在数值的最左边用“0”和“1”分别表示正数和负数,书写成[X]原表示X的原码。
例如,在8位二进制数中,十进制数+23和-23的原码表示为: 
[+23]原=00010111
[-23]原=10010111
应注意,0的原码有两种表示,分别是“00……0”和“10……0”,都作0处理。 
2.补码表示法
一般在作两个异号的原码加法时,实际上是作减法,然后根据两数的绝对值的大小来决定符号。能否统一用加法来实现呢?这里先来看一个事实。对一个钟表,将指针从6拨到2,可以顺拨8,也可以倒拨4,用式子表示就是:6+8-12=2和6-4=2
这里12称为它的“模”。8与-4对于模12来说是互为补数。计算机中是以2为模对数值作加法运算的,因此可以引入补码,把减法运算转换为加法运算。
求一个二进制数补码的方法是,正数的补码与其原码相同;负数的补码是把其原码除符号位外的各位先求其反码,然后在最低位加1。通常用[X]补表示X的补码,+4和-4的补码表示为: 
[+4]补=00000100
[-4]补=11111100
例1.11 求6-4。
因为[6] 补=00000110,[-4] 补=11111100  
 
所以 00000110-00000100=00000110+11111100=00000010
3.反码表示法 
正数的反码等于这个数本身,负数的反码等于其绝对值各位求反。例如: 
[+12]反=00001100
[-12]反=11110011
总结以上规律,可得到如下公式:X-Y=X+(Y的补码)=X+(Y的反码+1)