zoukankan      html  css  js  c++  java
  • 二进制的原码,反码,补码,移码

    在计算机中,负数以其正值的补码形式表达。
    反码表示法规定:正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
    补码表示法规定:正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
    https://www.cnblogs.com/liaosc/p/10029988.html

    真值:

    比如: 17,-17, 0, 0.625,-0.625

    原码:

    即真值的二进制表达方法,但是有符号位(最高位)和数值位的区分
    比如:
    - (17)原: (00010001)
    - (-17)原: (10010001)

    反码:

    规定: 正数的反码与原码相同,负数的反码为对该数的原码除符号位外各位取反。
    比如:
    - (17)反: (00010001)
    - (-17)反: (11101110)
    意义: 反码没有任何意义,只是为了计算补码
    注意规律: (17)反 和 (-17)反 完全相反,包括符号位

    补码:

    规定: 正数的补码与原码相同,负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1.
    比如:
    - (17)补: (00010001)
    - (-17)补: (11101111)
    意义: 在计算机中,负数以其正值的补码形式表达。
    注意规律: (17)补 和 (-17)补 相加: 二进制(1 0000 0000),超出8位表达,在硬件中就可以表示为(0000 0000)即为0
    目的: 使用补码作为负数的表达形式,是为了两者相加即为;也是为了在做减法(-)操作时,可以转换为加法(+)

    移码:

    规定: 把补码的符号位取,无论正数还是负数。
    比如:
    - (17)移: (10010001)
    - (-17)移: (01101111)
    意义: 移码的意义是方便比较大小,正数的符号位是1,负数的符号位是0,这样就可以不区分符号位,直接比较大小
    注意规律: 数值位本就可以通过二进制比较大小,符号位修改后,也可用于比较

  • 相关阅读:
    Ext4文件系统架构分析(二)
    Ext4文件系统架构分析(一)
    STL容器与拷贝构造函数
    左值、右值与右值引用
    C++ 11右值引用
    读书笔记_Effective_C++_条款二十五: 考虑写出一个不抛出异常的swap函数
    《Effective C++》item25:考虑写出一个不抛异常的swap函数
    CC++ vector 构造函数 & 析构函数
    复制构造函数 与 赋值函数 的区别
    a++与++a
  • 原文地址:https://www.cnblogs.com/nangezi/p/14328997.html
Copyright © 2011-2022 走看看