首先把原码、反码、补码的基本定义解释一下,然后补充为什么计算机采用补码运算,以及补码的优势。原码、反码、补码之间转换的规律。
一、数值数据表示
刚开始接触机器数时,你应该和我一样也很懵,什么原码反码又补码的,计算机底层把程序转换成01代码不就好了,为啥要弄出来这么多奇奇怪怪的麻烦呢?但是你想啊,计算机底层只认0,1代码,他在做01代码的运算时只有加运算,那遇到减运算怎么办?而且还牵扯到符号问题,他不像人类大脑能思考:+为加,-为减。但是补码的模运算特性能解决这一问题,比方说,时钟从2点到4点,你可以顺时针转到4点(+2格),也可以逆时针转到4点(-10格),因为时钟是以12为模的,结果都是相同的到达了4点,补码也有这种特性,但原码、反码没有,刚说过计算机就能做加法运算,那只能把减一个数变成加一个负数,补码刚好能做到,这不就像时钟一样,不论是+2还是-10都能转到正确的结果4点。不仅如此,原码、反码都有两个‘0’(后面具体会说到),在计算时用哪个‘0’?也会乱套的,补码只有唯一的‘0’能完美解决这个问题。
看到这心里有没有稍微有点谱了?学习不是一蹴而就的,唯手熟尔,而且一个知识点你至少要了解它的原理,慢慢才能吃透,要不就像摸瞎走路。一遍复一遍,其义自见,加油
1、数的机器码表示
(1)原码
原码就是符号化的数值。在计算机底层,低电平代表0高电平代表1,这同样能用作数值中区分数值的正负。带“+” “-”的二进制数称真值(+10011),将真值符号用0、1编码表示的成为机器数或机器码(0,10011逗号将符号位和数值为分开)
机器码:原码、补码、反码、移码(机器码是将‘+’、‘-’转换成‘0’、‘1’之后的)
如:x=+0.1101 则[x]原=0.1101(x为小数)
x=+1101 则[x]原=0,1101
x=-1111 则[x]原=1,1111