• 原码补码反码


    一. 机器数和真值

    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。
  • 相关阅读:
    设计模式:简单工厂模式
    datav轮播表使用事例
    POI操作Excel常用方法总结 .
    序列图像三维重建 学习过程流水账
    python面向对象编程
    python批量生成word文档
    Linux 网络配置方法 nmtui 配置
    leetcode 剑指 Offer 67. 把字符串转换成整数 & leetcode 8. 字符串转换整数 (atoi)
    leetcode 剑指 Offer 59
    leetcode 剑指 Offer 53
  • 原文地址:https://www.cnblogs.com/serahuli/p/13698874.html
Copyright © 2020-2023  润新知