zoukankan      html  css  js  c++  java
  • 二进制补码

    在本科微机原理中就早早地接触过补码这个概念,但是对其的理解仅仅停留在原码取反加一的程度,至于为什么提出这个,这个有什么用,怎样得到取反加一这条法则等问题,当时我是稀里糊涂的。现在再回过头来看,要更精确地理解其内涵。

    首先我们要明确的一点事这些码都是编码,编码就是用二进制数来表示特定的数字和符号,比如asc码就是用八位二进制数来表示英文字母和各种符号,同理我们也可以用二进制数表示数字大小。

    这里我们先对编码的形式进行统一的假设:编码一共w位,[xw-1,xw-2,...,x0],其中每一位不是0就是1.

    接下来我们先看无符号数的表示。无符号数的理解起来很简单直观,用一个公式进行总结就很直观,后面的补码也用公式总结才足够方便理解。

    这样的翻译编码的方式只能用来表示无符号数。对于很多应用我们还希望表示负数值,所以不能采用上面的翻译编码的方式。

    因此我们采用下面的公式进行编码翻译:

    这就称为二进制补码。从公式中可以看出,最高位如果是1的话,一来就从-2w开始往上加正数,但是正数的绝对值是小于2w的所以怎么加都不可能使最终值为正;如果第一位为0的话,第一项就不存在,也就是直接加正数。综上我们可以看出第一位决定正负。补码还存在一些不太自然的特性,不对称,也就是说最大的复数取相反数得到的正数是用这个编码表示不了的,但与此同时他带来了一个很自然的特性,就是0的编码只有一种,这一点与什么反码和符号数的古怪属性:0有两种不同的编码完全不同。

    最重要的一点就是几乎所有的的现代机器都是用二进制补码!!!

  • 相关阅读:
    CentOS安装
    java字符串
    h5弹球对战游戏
    看是否健康
    layui社区源码笔记之fly-list
    layui社区源码笔记之user-rank
    layui社区源码笔记之layui-input form
    layui社区源码笔记之fly-tab
    layui社区模板主页框架分析
    分组答辩小程序
  • 原文地址:https://www.cnblogs.com/ideawu1001/p/2791508.html
Copyright © 2011-2022 走看看