• 计算机为什么使用补码数据?


    • 背景
    1. 用户存储的数据分为正负数
    2. 最高位为符号位.左边高位右边低位.0:代表正数,1:代表负数
    3. 原码(原始二进制)
    4. 反码
    5. 补码
    • 原码
      +-1
      0000 0001 正1二进制
      1000 0001 负1二进制
      这样子存储看上去貌似没有什么问题................接着举列子

      +-0
      0000 0000 正0二进制
      1000 0000 负0二进制

      通过分析得出结论:
      1.0有两种存储方式
      2.正负数相加结果不对(计算机只会加不会减)

      给出一个等式:1 - 1 = 1 + -1
      +1 ==== 0000 0001
      -1 ==== 1000 0001
      -2 ==== 1000 0010 结果已经不对...

      所以反码因此诞生了....
    • 反码
      1.在原码的基础上符号位不变,其它为取反(0变1,1变0)
      2.正数的原码和反码一样

      继续上面例子
      原码:
      +1 ==== 0000 0001
      -1 ==== 1000 0001
      -2 ==== 1000 0010

      反码:
      +1 ==== 0000 0001
      -1 ====  1111 1110
      -0 ====  1111 1111 结果等于-0.通过反码解决了正负数相加带来的问题.但是0的两种存储方式还没解决................

    • 补码
      1.正数的原码,反码,补码都一样
      2.负数的补码等于反码+1

      反码:
      +1 ==== 0000 0001
      -1 ====  1111 1110

      补码(一个字节存储):
      +1 ====   0000 0001
      -1 ====   1111 1111

       0 ====  10000 0000 导致最高位丢弃实际结果为:0000 0000

  • 相关阅读:
    第三次冲刺
    第二次冲刺
    第一次冲刺
    Beta版本的发布
    第七次冲刺
    SpringMVC+Spring+mybatis 项目实践
    JSP显示新闻
    一个简单的静态邮箱登录界面
    Java Web 基础
    总结
  • 原文地址:https://www.cnblogs.com/zhanghuizong/p/8983310.html
Copyright © 2020-2023  润新知