原码、反码、补码

在了解原码、反码、补码的前提下,先要了解什么是机器数真值

机器数:

  定义:一个数在计算机中的二进制表示形式,叫做这个数的机器数,机器数是带有符号的,最高位存放符号:正数为0,负数为1

  例如:+3 的机器数是:00000011

             -3 的机器数是:10000011

真值:

  定义:机器数的10000011代表的是-3,但实际上计算出来 int('10000011',2) =131,在这里我们把-3称为真值,把131称作形式值

 

原码:

  定义:原码就是机器数

反码:

  定义:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取。

  例如:[+1] = [00000001]原 = [00000001]反

             [-1] = [10000001]原 = [11111110]反

补码:

  定义:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

  例如:[+1] = [00000001]原 = [00000001]反 = [00000001]补

             [-1] = [10000001]原 = [11111110]反 = [11111111]补

 

备注:现在我们知道了一个数有三种编码方式:原码、反码、补码,对于正数而言这三种形式都是一样的,负数则是完全不相同的

为什么要使用原码,反码,补码?

  在计算机中是没有减法的,那么计算机时如何实现减法这个功能的呢?是使用补码来计算的,例子如下:

  1-1 

  = 1 + (-1) 

  = [0000 0001]原 + [1000 0001]原 

  = [0000 0001]补 + [1111 1111]补 

  = [0000 0000]补

  =[0000 0000]原

  =0

  备注:使用补码, 就可以很好的处理减法的问题,就不用在为计算机设计复杂的基础电路来实现减法的功能了。

posted @ 2020-03-11 20:58  海澜时见鲸  阅读(365)  评论(0)    收藏  举报