原码、补码与反码

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



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
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值