• 补码的运算


    在计算机系统中,数据的表示与存储都是以0或1的形式,而表示这些0或1,我们可以将外部数据通过数字电路进行编码,对于有符号数,在计算机系统中有三种编码,即我们通常所了解的编码:原码,反码,补码,而无符号数没有原码,反码,补码之分,况且,我觉得在计算机存储系统领域讨论无符号数是没什么意义的

    原码:

    正数原码 = 0 + 正数绝对值

    负数原码 = 1 + 负数绝对值

    例如:

    +20的原码:00010100

    - 20的原码:10010100

    反码:

    正数反码 = 正数原码

    负数反码 = 负数原码符号位的1不变,绝对值部分按位取反

    例如:

    +20的原码:00010100

    +20的反码:00010100

    - 20的原码:10010100

    - 20的反码:11101011

    补码:

    正数补码 = 正数反码 = 正数原码

    负数补码 = 负数反码符号位的1不变,绝对值部分+1

    例如:

    +20原码:00010100

    +20反码:00010100

    +20补码:00010100

    - 20原码:10010100

    - 20反码:11101011

    - 20补码:11101110

    总结:

    求解有符号数[正数与负数]的补码的方法:

    对于正数:

    补码 = 反码 = 原码

    对于负数:

    1.补码 = 原码 -----[原码符号位不变,其余位按位取反]-----> 反码 -----[反码符号位不变,末位+1]-----> 补码

    2.补码 = 负数的绝对值的原码 -----[按位取反,末位+1]-----> 补码

    补码的运算原理:

    在计算机系统中,CPU仅仅只有加法电路,没有减法电路,采用补码运算的目的,是将减法运算变为加法运算,同时,补码的运算是将符号位也视为数据共同参与数据的运算,其运算结果依然是补码

    补码的性质:

    1.原码与其补码互为补数关系

    2.补码再求补码等于该补码的原码

    3.补码的正零与负零表示方法相同

  • 相关阅读:
    c++ ::和:
    c++ extern
    c++ cpp和hpp
    c++ include
    caffe调试
    caffe blob理解
    poj3126
    FFmpeg滤镜使用指南
    Android之Activity之间传递对象
    Server Tomcat v8.0 Server at localhost failed to start.
  • 原文地址:https://www.cnblogs.com/milantgh/p/3925566.html
Copyright © 2020-2023  润新知