原码、补码与反码

来源:互联网 发布:mox什么意思单片机中 编辑:程序博客网 时间:2024/05/16 14:31

前言:计算机中的数据都是以补码形式存在的,那么什么是补码呢?



1、首先了解原码


  计算机只能识别二进制0和1,但是我们日常用的数据是有正负符号的,所以需要使计算机中的二进制数据也能表示符号,这就是原码、反码、补码的出现需求。

  有符号的数据表示法为:原码、反码、补码。因为数据是有符号的,所以规定最高位是符号位,其它位是数据位,并且,符号位也是参与运算的。

  原码:将一个整数,转换成二进制形式,就是它的原码。以十进制数据 7 和 -7 ,字长为8为例。


             

  

  其中7的最高位0、-7的最高位1为符号位,分别表示正号、负号。



2、反码


  正数的反码:和原码相同。

  负数的反码:符号位不变,数据位取反(0变1,1变0)。

    所以:


              



3、补码


  正数的补码:和反码相同。

  负数的补码:反码+1。

    所以:


               



4、举例:计算机是如何计算 1 - 1 的?


  计算机中只有加法。实际运算的是 1 + ( -1 ),如下:

  计算机数据以补码形式存在,所以求出1和-1补码分别为:00000001 和 11111111,相加:


            


  结果1溢出,舍弃,得到相加结构为0。这就是计算机计算1 - 1的过程。



附:


  机器数:   在计算机行业,一个数的二进制表示形式,  叫做这个数的机器数,原码、反码、补码都是机器数的不同表现形式。 

  真值:因为第一位是符号位,所以机器数的形式值不等于真正的数值。为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值

  字长:在同一时间中处理的二进制数的位数叫字长(比如01001001字长为8)。通常称处理字长为8位数据的CPU叫8位CPU,此外还有32位和64位的CPU,现在CPU大多是64位的,但基本都以32位字长运行,没能展示它的字长的优越性,是因为它必须与64位软件(如64位的操作系统等)相辅相成,也就是说,字长受软件系统的制约,例如,在32位软件系统中64位字长的CPU只能当32位用。





3 0
原创粉丝点击