zoukankan      html  css  js  c++  java
  • 补码的运算

    在计算机系统中,数据的表示与存储都是以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.补码的正零与负零表示方法相同

  • 相关阅读:
    4、提取看似无用的委托变量,减少构造开销
    Cloud Foundry buildpack
    mysql中engine=innodb和engine=myisam的区别
    Maven中dependencyManagement的作用
    bean
    servlet
    web服务器 应用服务器区别 web框架
    Java和Python的Web开发
    spring mvc controller 高并发问题
    es 批量添加数据
  • 原文地址:https://www.cnblogs.com/milantgh/p/3925566.html
Copyright © 2011-2022 走看看