原码 反码 补码

原码 反码 补码

  • 对计算机中常见数据简单分类

  • 机器数与真值

  • 原码

  • 反码

  • 补码

  • 扩展

对计算机常见数据的分类

机器数

数值在计算机中的二进制表现形式

机器数在计算机中有符号,最高位表示符号,使用0表示正,使用1表示负

一个字节8个bit位表示,一个字=两个字节

+5=0000 0101

1000 1010=-10

真值

机器数所表示的真正的数值

如:1000 1010 = -10

原码

原码就是符号位加上真值的绝对值

  • 原码表示范围:-127到 -0 ,+0到+127

反码

正数:正数的反码=原码 如:+3=0000 0011[原码]=0000 0011[反码]

负数:符号位不变,其余各位直接取反,1->0,0->1

-7 :[原码]1000 0111

[反码]1111 1000

-33:1010 0001->1101 1110

  • 反码的表示范围:-127到-0,+0到+127

补码

-5 = 1000 0101 原码

1111 1010 反码

  • 计算机中数据以补码的形式存储,同样以补码的形式参与运算

  • 正数:原码=反码=补码 如:+3=0000 0011[原码]=0000 0011[反码]=0000 0011[补码]

  • 负数:首先求得反码,在反码的基础上+1[加到最低位]

  • 补码的表示范围-128 到 -1,0 到127

-34:1010 0010->1101 1101->1101 1110

-29:1001 1101->1110 0010->1110 0011

-47:1010 1111->1101 0000->1101 0001

-128:1111 1111->1000 0000->1000 0001

注意:-128没有原码和反码,规定-128的补码为1000 0000

单击查看:-128的原码,反码,补码

为什么需要反码和补码

  • 反码

    • 在设计计算机的时候只有加法器没有减法器,为了将减法转换为加法,设计了反码,但是反码有缺陷:正负相加,0的表示不唯一;
  • 补码

    • 为了解决反码正负相加不唯一的情况,使用高位溢出解决;

将补码转换为原码

正数:不需要转

负数:求补码的补码

将负数的补码当做原码然后求该原码的补码

计算规则:符号位不变,其余各位直接取反,然后加1;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。