zoukankan      html  css  js  c++  java
  • 原码补码反码

    一. 机器数和真值

    1、机器数

    一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,计算机中,最高位存放符号, 称之为符号位,符号位非负数为0, 负数为1.

    2、真值

    带符号位的机器数对应的真正数值称为机器数的真值。

    十进制中的数 +3的机器数是00000011, 真值是+0000011

    十进制中的数 -3的机器数是10000011, 真值是-0000011

    二. 原码, 反码, 补码

    计算机要使用一定的编码方式存储数据. 原码, 反码, 补码是机器存储一个具体数字的编码方式.

    1. 原码

    原码就是符号位加上真值的绝对值, 最高位表示符号, 其余位表示值

    [+1]原 = 0000 0001
    [-1]原 = 1000 0001
    

    8位二进制数的取值范围是[1111 1111, 0111 1111], 十进制表示: [-127, 127]

    2. 反码

    • 正数的反码是其本身
    • 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
    [+1] = [0000 0001]原 = [0000 0001]反
    
    [-1] = [1000 0001]原 = [1111 1110]反
    

    3. 补码

    • 正数的补码就是其本身
    • 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
    [+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补
    
    [-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补
    

    计算机进行加减乘除运算时会将符号位参与运算

    反码: 减法(存在 0 和最小位 -128问题)

    补码: 减法(perfect)

    原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

    • 正数:补码=反码=原码
    • 负数:补码=负数反码+1。
  • 相关阅读:
    python_58_装饰器1
    python_57_高阶函数
    python_56_递归
    python_55_局部和全局变量
    python_54_函数调用函数
    python_53_函数补充
    python_52_函数返回值2
    mysql 使用 GROUP BY 时报错 ERROR 1055 (42000)
    sql之left join、right join、inner join的区别
    C++ 函数的重载和参数默认值
  • 原文地址:https://www.cnblogs.com/serahuli/p/13698874.html
Copyright © 2011-2022 走看看