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


    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.原码、反码和补码的数据表示范围:

  • 相关阅读:
    好物推荐:最简单实用的项目管理指南分享
    SpringBoot-39-Dubbo环境搭建
    pytorch: hook机制,取网络层的输入输出和梯度
    07 Linux补充|秋招刷题|9月6日
    Transformer学习
    puzzle(103.1)网格图一笔画
    中级java面试问题大全及答案大全
    [产品管理-2]:产品经理的职责、在企业中的位置与定位
    零难度!台式电脑如何连接蓝牙耳机?简单几步完成
    Oracle RAC ASM磁盘组删除、添加磁盘
  • 原文地址:https://blog.csdn.net/weixin_63357306/article/details/133690168