zoukankan      html  css  js  c++  java
  • 为什么计算机存储的是二进制补码?


    原码:

    最高位为符号位。。0代表正数 1 代表负数
    +1:0000 0001
    -1:1000 0001
    +0:0000 0000
    -0: 1000 0000

    问题:
    1.0这个数值在存储的时候,有2种存储方式
    2.正数和负数相加的时候,结果不是我们所算出的结果(在计算机里面,只能做加法运算)

    1-1 = 1 + -1

    1: 0000 0001
    -1:1000 0001
    加法:10000010 = -2

    反码:符号位不变,其他位进行0和1的对换(为补码做铺垫)

    结论:正数的反码和原码、补码是一样的

    +1 :0000 0001
    -1 : 1000 0001
    +0:0000 0000
    -0: 1000 0000
    -0的反码:1111 1111

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

    加法运算 :1111 1111 = -0

    解决:加法运算的结果问题

    0的存储没有解决

    补码:
    1.补码就是在反码的基础上加1;
    2.正数的反码和原码、补码是一样的

    +1 :0000 0001
    -1 :1000 0001
         1111 1110
         1111 1111

    -0: 1000 0000
         1111 1111
        10000 0000
    做加法:+1 + -1(补码)
     0000 0001
     1111 1111
          10000 0000 -0

    +0 : 0000 0000
    -0 : 0000 0000  
    结论:解决了0的存储问题

    最终:计算机的数据存储时以补码的方式进行存储。

  • 相关阅读:
    HarmonyOS 对象数据库
    springboot 整合/集成 jpa
    linux 安装docker和mysql
    HarmonyOS 多线程
    ElasticSearch 安装及配置 搭建集群
    java 集合
    HarmonyOS 基础数据库
    ElasticSearch 基本操作
    Windows驱动wdf驱动开发系列(一)
    32进程调用64dll的解决方法
  • 原文地址:https://www.cnblogs.com/wangjinshan/p/7056414.html
Copyright © 2011-2022 走看看