计算机原理:二进制 原码 反码 补码

在计算机中,1byte=8位,若是无符号的情况下可表示的数字总个数为2^8=256个数,但是计算机只会进行加法运算例如:

5-4 =1     在计算机中的运算方式是  5+(-4)=1,故在计算机中要加入负数的概念,以方便加减法运算。

二进制的字符串中区分正负数,做了以下规定:最高位作为符号位  0表示正数   1表示负数

正数范围(补码) 0000 0000~0111 1111  0~127          

负数范围(补码) 1000 0000~1111 1111  -128~-1

共256个数(至于为什么是补码,后面会详细解释)

接下来介绍下 原码,反码,补码。为了能准确表达,以下规定正数的反码,补码都等于原码;负数的补码等于把反码加1

例如:

83       ~              原码   反码  补码  0 101 0011  

83……1

41……1

20……0

10……0

5……1

2……0

1……1

-83                                       ~原码1 101 0011

83……1                             ~反码1 010 1100

41……1                             ~补码1 010 1101

20……0

10……0

5……1

2……0

1……1

根据补码求真值:

计算机原理:二进制 原码 反码 补码_第1张图片

为什么计算机中要以补码方式表示数值?解释如下:

首先要了解下什么是计数系统

  一个计数系统可以存多少容量状态的数,我叫它作为计数系统的Mod。一个计数系统不断地加一,那么它表示的数的状态也会周期性地变化,我叫这个周期的大小叫做Mod。

  举个例子:一个时钟显示十二个小时,时针旋转一周后回到原来的状态,即该系统的Mod为12。只要时针转360度(也就是12小时),就会和现在所在的数值一样。

  由此,可以得到一个结论。这种周期性变化的计数系统,一个状态加减整数倍的Mod,其状态不会有不会发生变化。

计算机能进行的运算只有加法故需:变减为加

  在计算机中使用加法器对数据进行计算,那么如何进行减法的运算呢?

  设Mod=32

  若a=3,b=-4,则a+b=a+b+Mod=-1+Mod=a+(Mod-4)=31(在计数系统中-1和31等价)

  实际上Mod-4就是b的补数,所有的减法在计算机中都可以转化为加上减数的补数,对应计算机上的概念就是补码。

  因此,计算机是使用补码(补数)进行计算。

你可能感兴趣的:(码农)