数字逻辑电路——原码,反码,补码
原码
小数的原码在原码表⽰法中,⽤”0“表⽰”+“,⽤”1“表⽰”-“,数值部分⽤真值表⽰,例如:x =+1101,x =-1101,则其原码分别为:[x ]=01101,[x ]=11101.当x>0时,[x]=x;
当x<0时,[x]=2-x,其中n-1为真值的位数,故原码有n位数,最⾼位为符号位。
+0和-0
在原码表⽰法中,注意到这两个数:[x]=1000[x]=0000
这表明,0在原码表⽰法中有两种表⽰形式。四位原码与其对应真值:
真值原码70111601105010140100300112001010001+00000-01000-11001-21010-31011-41100-51101-61110-7
1111
由此可见,四位原码可以表⽰[-7,+7]范围内的整数值。
⼩数的原码
与整数类似,已知两⼩数x 和x 分别为:x =+0.1101, x =-0.1101,则[x ]=0.1101,[x ]=1.1101
由于(-1<x <0),故此时,整数位可⽤于存放符号,以表⽰⼀个⼆进制⼩数。
原码的优缺点
121原2原原原n-1原原12121原2原2
优点:
简单直观,容易变换。缺点:
进⾏加减运算较为复杂。
反码
对于正数,反码的表⽰与原码相同;对于负数,反码的值为将其对应正数原码的值按位取反(包括⼩数)。
例:
x =+1101, x =-1101.
则 [x ] =01101,[x ] =10010. 反码的最⾼位叫做符号位。 在反码中,同样有+0和-0的存在。
在进⾏加法运算时,最⾼位的进位要进在最后⼀位上。四位反码与其对应真值:
真值原码70111601105010140100300112001010001+00000-01111-11110-21101-31100-41011-51010-61001-7
1000
补码
对于正数,补码的表⽰与原码相同;对于负数,补码的计算⽅法为:原码按位取反+1。(注:原码由真值得来)例:
x1=+1101, x2=-1101.[x ]=01101, [x ]=10011.
通过给定补码求真值
121反2反1补2补n
n-1
已知补码[x] =x x ...x ,则x的真值为-2 ·x +2 ·x +...+x .四位补码与其对应真值:
真值原码7011160110501014010030011200101000100000-11111-21110-31101-41100-51011-61010-71001-8
1000
原码的缺陷
在计算机运算时,原码是不⽀持⼀部分运算的。例如,[x ]=0001,[x ]=1001.则[x ]+[x ]=1010.
⽽实际上,两数真值之和为0。这就决定了在机器运算中,不能使⽤原码进⾏加法运算。
反码的产⽣
为了解决原码⽆法进⾏加法运算的情况,反码出现了。有了反码,现在计算机可以准确地进⾏加法运算。 例如,[x ]=0001,[x ]=1010.
则[x ]+[x ]=1110.这样就保证了加法的准确性。
补码的产⽣
虽然反码解决了⼀部分问题,但仍有⼀些不⾜之处,因为反码中依然有+0和-0存在。为了解决这个问题,⼜产⽣了补码。
模、同余
模=进制,表⽰该进制下⽤这些位数能表⽰多少数.故补码也可表⽰为:[x]=x (mod2)    -2≤x<2[x]=x(mod 2)      -1≤x<1
补n n-11n n n-1n-111原2原1原2原1原2原1反2反位数补n n-1n-1补