• 原码反码补码移码的介绍和计算


    1.原码


    原码的定义:十进制数据的二进制表示形式就是原码。

    (1)原码的最左边那位是符号位,其他位为数据位,符号位是0则为正数,符号位是1则为负数。

    (2)一个byte有8bit,最大值是0111111(+127),最小值是11111111(-127)

    正数计算:

    5+2=7

    00000101

    +      0010

    00000111


    2.反码


    反码出现的原因:原码用符号位来表示正负,所以负号难以和其他数进行计算,反码出现,作为负数的计算救星。

    反码的定义:正数的反码等于本身,负数的反码是符号位保存不变,其余按位取反。比如10000101(-5负数原码)->11111010(反码)。

    反码的最大值是0111111(+127),最小值是11111111(-127)

    负数计算:10000101(十进制为-5)的反码11111010

    -5-1=-6

    11111010

    -             1

    11111001


    把11111001转回原码是1000110 刚好为-6。

    3.补码


    补码的引入:反码也有缺点,如果是负数跨零进行计算的话,计算得出的结果不对,这时候,作为反码的补充编码-补码出现。

    补码的定义:正数的补码是本身,负数的补码等于其反码+1。比如10000101(-5负数原码)->11111010(反码)->11111011(补码)。

    反码的最大值是+127,最小值是-128

    跨零计算:

    -5+3=-2

      11111011

    +        0011             

      11111110


    把11111110【补码】转回原码,对其反码+1得10000010,十进制为-2。

    4.移码


    移码的定义:正数的移码是本身,负数的移码等于其补码然后对符号位取反。比如10000101(-5负数原码)->11111010(反码)->11111011(补码)->01111011(移码)。

    计算:

    -5+3=-2

      01111011

    +        0011             

      01111110


    把01111110【移码】转回原码,对其补码然后对符号位取反得10000010,十进制为-2。

    5.原码、反码和补码的数据表示范围:

  • 相关阅读:
    TreeSet集合概述和特点(有代码)
    牛客P21578 思维,数论
    RocketMq5 消息消费及相关源码浅阅
    海外流量宝是个好产品吗?
    GO语言-数据结构-栈
    什么是数据采集与监视控制系统(SCADA)?
    第二十次CCF计算机软件能力认证
    【C++ 学习 ⑧】- STL 简介
    枚举和注解05:注解
    【报错记录】MybatisPlus报Mapped Statements collection does not contain value for...
  • 原文地址:https://blog.csdn.net/weixin_63357306/article/details/133690168