• 信息与编码(补码的作用)


    数字量:在时间上和数量上都是离散、不连续的。(存在一个最小数量单位△)
    模拟量:数字量以外的物理量。

    可数的是离散的,不可数的是连续的。

    电路的作用

    • 处理信息
    • 能量转换

    信息编码

    Impacts design at many levels

    • Mechanism (devices, #of components used)
    • Efficiency (bits used)
    • Reliability (noise)
    • Security (encryption)

    Mechanism 机械
    Efficiency 效率
    Reliability 可靠性
    Security 安全性

    进制转换运算

    image.png

    补码

    为什么需要补码?
    如果使用原码进行运算,则会出现以下问题
    image.png
    -5+5不为0
    所以需要补码来解决上述的问题。

    首先看一个例子,例如生活中指针式手表,它是采用旋钮进行更改时间的,例如当前是指向的8点,如果想更改为7点钟,我们可以有两个操作
    常规操作就是减1:8-1 = 7
    但是我们想可以时钟是12进制的,那么是不是可以往前拨动,即 8+11(拨动11个位置) = 7
    那么就是 8-1 等效于 8+11
    本来是一个相减的问题变换成了相加的一个问题,那么我们所有的调整时间都可以采用相加的形式计算。
    因为8-1和8+11的效果是等效的,更进一步的说,在目前进制下我们可以说-1的补码就是11,同理可得,-2的补码就是10,由此得出规律,负数的补码就是当前进制位下的最大值(钟表系统下是12)-补码数的绝对值

    回归到上述引出的问题,那么得到+5的表示方式还是 00101,那么-5应该表示为什么呢?
    符号位为1,因为它是个负数,后面采用上述的方法计算补码
    1111为4位进制位下的最大数,即15
    15-|-5| = 10
    那么补码的后四位即是 10 = 1010
    最后组合起来就是11010
    上述是错的,为什么,因为在时钟系统里面是没有0时刻的,但是二进制十进制里面是有0这个数的,那么说明我们计算补码的时候需要多考虑一个数,那么,正确的计算应该如下所示:
    15-|-5| = 10
    10+1 = 11
    那么补码的后四位即是 11 = 1011
    最后组合起来就是11011
    那么我们计算以下-5+5 =11011+ 00101 = 1 00000 ,这个时候是要舍弃最高位1的,因为这里采用5位,那么就得到了0,计算正确。

    回归到计算机系统里面,为什么要舍弃最高位?
    因为计算机里面的带宽是有限的,例如8位,32位,64位,他们一次只能计算这么长的位的数据,过大他们会舍弃最高位的数据,而小于带宽内的数据则肯定用不了这么多位,例如上述计算采用8位计算:
    +5 = 00000101
    -5 = 11111011
    计算出来的结果任然是对的,而且由于补码的性质,说明我们在拓展位的时候,正数的补码应该前面补0,而负数的补码应该是前面补1。

    image.png
    image.png
    image.png
    image.png

    注意系统选取的位数
    计算补码的时候应该考虑系统的位,因为有些时候计算可能会超出当前系统的位数,导致计算出错,如下图所示:
    image.png
    注意计算最后最大是23,故要用6位,即注意答案的取值范围
    5位会出错:
    image.png

    二进制的不对称性

    二进制补码为什么不对称?
    因为数值0占用了正数的位置(0000表示0,所以占用了位置),但是和无符号的表示的数字的量是一样多的

    快速求二进制的补码

    二进制原码取反+1
    小数情况是加在最后一位

    码制和数制(上述为数制)

    image.png

    等长编码的局限性

    等长编码:用同样长度编码
    image.png
    余3码解决问题
    image.png
    进位缺陷~~,2+9, 8421不会落在8421码表里面,而余3码进位以后,剩余4位还是会落在余3码表里面~~

  • 相关阅读:
    【Java面试】谈谈你对HashMap的理解(Map接口)
    循环神经网络和自然语言处理一
    什么是LRU算法
    python 无监督生成模型
    【嵌入式】嵌入式系统稳定性建设:最后的防线
    python-切换镜像源和使用PyCharm进行第三方开源包安装
    Linux之 如何查看文件是`硬链接`还是`软链接`
    本地缓存Caffeine的缓存过期淘汰策略
    一种无需调查船上坞的调查设备安装测量方法和安装测量系统
    2、知识蒸馏
  • 原文地址:https://blog.csdn.net/qq_28762305/article/details/127445165