zoukankan      html  css  js  c++  java
  • 原码 补码

     整数在计算机中都是以二进制的方式存储的,比如 2 = 0000 0010。最高位是符号位。0表示正数,1表示负数。正数的情况非常easy理解。可是负数存储的是补码
     ,-2 = 1111 1110。

    (一) 概念
    以8位的字长为例
    正数补码==原码
    负数补码为。除符号位外取反,然后加1

     +2 =  0000 0010[原码] = 0000 0010[补码]
     -2 =   1000 0010[原码] =  1111 1110[补码]
    

    (二) 为什么要用补码
    补码是为了解决减法的问题。由于二进制表示中最高位是符号位。假设要让计算机电路在计算过程中识别符号位。会让电路变得复杂。所以干脆让符号位直接參与运算。

    • 2 + 3 = [0000 0010] + [0000 0011] = [0000 0101] = 5
    • 2 - 3 = 2 + (-3) = [0000 0010] + [1000 0011] = [1000 0101] = -5

    显然。在减法的情况下会出问题。假设换做补码的话

    • 2 + 3 = [0000 0010] + [0000 0011][补码] = [0000 0101][补码] = 5
    • 2 - 3 = 2 + (-3) = [0000 0010][补码] + [1111 1101][补码] = [1111 1111][补码] = [1000 0001][原码] = -1

    非常好的攻克了减法的问题,将加法和减法合并为了一套电路。

  • 相关阅读:
    02---Nginx
    7.如何发布vue项目到服务器
    6.vue如何上传到svn
    6.解决AXIOS的跨域问题
    4.VUEX到底是什么
    3.sublime vue 语法高亮插件安装
    2.vue 安装教程
    1.Google Chrome浏览器 控制台全解析
    6.如何使用jedis的线程池
    java如何LOG打印出日志信息
  • 原文地址:https://www.cnblogs.com/yangykaifa/p/7159198.html
Copyright © 2011-2022 走看看