补充:数字与编码 Number and Code

数字与编码 Number and Code

数字系统 Number System

  • 组成

    • 基 Base:不同数码个数。
    • 系数 Coefficient:相当于每一位上出现的数码。
    • 位权 Power:数码的个数。
  • 进制转换

    • 不同进制的数可以理解为多项式
      x = K 1 R n + K 2 R n − 1 + ⋯ + K 0 R 0 . K − 1 R − 1 + K − 2 R − 2 + ⋯ + K − m R − m x=K_1R^n+K_2R^{n-1}+\cdots+K_0R^0.K_{-1}R^{-1}+K_{-2}R^{-2}+\cdots+K_{-m}R^{-m} x=K1Rn+K2Rn1++K0R0.K1R1+K2R2++KmRm

      注意:这个多项式是在十进制下表达的。

    • 十进制转换成其他进制

      • 前提条件:不同进制下不能混合运算,那么在什么时候实现的进制转换呢?

      • 对于整数部分:不断对 R R R取余,后除以 R R R,直到为 0 0 0.

        R R R取余,除以 R R R都是在十进制下运算的,只是每一次的余数变成了 R R R进制。

      • 对于小数部分:不断乘以 R R R,后截取整数部分,直到为 0 0 0,或出现循环。

        也是只有在整数部分的时候才转换成了 R R R进制。

    • 其他进制转换成十进制

      • 每一位上乘以 R n R^n Rn.

        对于每一位上的数码,先转换成十进制,再在十进制下相乘。

    • 所以,进制转换只能实现在数码到数码的转换,我们只是想办法提取每一位的数码。

数和编码 Number and Code

  • 数和编码的区别

    • 数无长度限制,数的编码有限。(否则会溢出 Overflow)
    • 表达形式不同。(如负数的反码、补码)
  • (为了更清楚的讲解编码,有必要引出“群”的概念)

    • 一个集合及其二元运算(以下以‘+’代替)满足一下性质称为群。

      1. 封闭性: ∀ a , b ∈ S , ⇒ a + b ∈ S \forall a,b \in S, \Rightarrow a+b\in S a,bS,a+bS.

      2. 结合律: ( a + b ) + c = a + ( b + c ) (a+b)+c=a+(b+c) (a+b)+c=a+(b+c).

      3. 幺元(单位元): ∃ e ∈ S , s.t.   a + e = a , ∀ a ∈ S \exist e \in S,\textrm{s.t.} \ \ a+e=a, \forall a \in S eS,s.t.  a+e=a,aS.

      4. 逆元: ∃ a − 1 ∈ S , s.t.   a + a − 1 = e , ∀ a ∈ S \exist a^{-1} \in S, \textrm{s.t.} \ \ a+a^{-1}=e, \forall a \in S a1S,s.t.  a+a1=e,aS.

        s.t. \textrm{s.t.} s.t.:使得……满足(subject to)

    • 阿贝尔群:除了上述条件,还满足交换律。

    • 群同构:存在同态映射 Homomorphism( [ x ] c + [ y ] c = [ x + y ] c [x]_c+[y]_c=[x+y]_c [x]c+[y]c=[x+y]c​)

    • 满足条件1,2:半群;满足条件1,2,3:幺半群。

  • 带符号数编码(无符号数,编码和数相同)

    • 目的:设计出一种同态映射的编码系统。
    1. 符号幅度表示法 Sign Magnitude(SM)

      • 用最高位表示符号,剩下二进制位表示数的绝对值。
      • n n n位编码范围: − ( 2 n − 1 − 1 ) ∼ ( 2 n − 1 − 1 ) -(2^{n-1}-1) \sim (2^{n-1}-1) (2n11)(2n11)​.
      • 缺点
        • 不是一一映射, 0 0 0有两种编码。
        • 很显然也不是同态映射,比如一正一负两数相加就不行。
        • 运算时要考虑很多情况,就只能靠硬件解决,消耗资源。
        • 实际上还是无符号数的运算。
    2. 反码 1’s Complement

      • 正数编码不变,负数取反。( x + ( − x ) = 2 n − 1 x+(-x)=2^n-1 x+(x)=2n1

      • 数和编码的转换( x < 0 x<0 x<0):

        • → \to 编码: x o n e = 2 n − 1 − ( − x ) x_{one}=2^n-1-(-x) xone=2n1(x).
        • 编码 → \to 数: x = − ( 2 n − 1 − x o n e ) x=-(2^n-1-x_{one}) x=(2n1xone)​.
      • n n n位编码范围: − ( 2 n − 1 − 1 ) ∼ ( 2 n − 1 − 1 ) -(2^{n-1}-1) \sim (2^{n-1}-1) (2n11)(2n11).

      • 是否满足同态映射:若 x < 0 , y < 0 x<0,y<0 x<0,y<0,则
        KaTeX parse error: Undefined control sequence: \ at position 19: …\begin{aligned}\̲ ̲ [x]_c+[y]_c&=…
        2 n − 1 2^n-1 2n1 2 n + 1 − 1 2^{n+1}-1 2n+11 n n n位编码下相同)

        因此可以通过适当的调整满足同态映射。

        同时可以发现,符号位也参与了运算,所以是带符号数运算。

      • 缺点:

        • 0 0 0有两种编码:0000和1111(假设 n = 4 n=4 n=4).
    3. 补码 2’s Complement

      • 考虑到反码经过加1满足同态映射,所以试一试(?)补码=反码+1.

      • x + ( − x ) = 2 n x+(-x)=2^n x+(x)=2n​.

      • n n n​位编码范围: − 2 n − 1 ∼ ( 2 n − 1 − 1 ) -2^{n-1} \sim (2^{n-1}-1) 2n1(2n11)​.

      • 数和编码的转换( x < 0 x<0 x<0):

        • → \to 编码: x t w o = 2 n − ( − x ) x_{two}=2^n-(-x) xtwo=2n(x).
        • 编码 → \to 数: x = − ( 2 n − x t w o ) x=-(2^n-x_{two}) x=(2nxtwo)​.
      • 是否满足同态映射:若 x < 0 , y < 0 x<0,y<0 x<0,y<0,则

        和上面类似,显然满足 [ x ] c + [ y ] c = [ x + y ] c [x]_c+[y]_c=[x+y]_c [x]c+[y]c=[x+y]c.

        对于减法(计算机会先自动借位)
        [ x ] c − [ y ] c = 2 n + 1 + [ x ] c − [ y ] c = 2 n + 1 + ( 2 n − x ) − ( 2 n − y ) = 2 n + 1 − ( x − y ) = [ x − y ] c \begin{aligned} [x]_c-[y]_c &=2^{n+1}+[x]_c-[y]_c \\ &= 2^{n+1}+(2^n-x)-(2^n-y) \\ &=2^{n+1}-(x-y) \\ &=[x-y]_c \end{aligned} [x]c[y]c=2n+1+[x]c[y]c=2n+1+(2nx)(2ny)=2n+1(xy)=[xy]c所以补码满足同态映射。
        而且对于减法,有
        [ x ] c − [ y ] c = [ x − y ] c = [ x + ( − y ) ] c = [ x ] c + [ − y ] c \begin{aligned} [x]_c-[y]_c &=[x-y]_c \\ &=[x+(-y)]_c \\ &=[x]_c+[-y]_c \end{aligned} [x]c[y]c=[xy]c=[x+(y)]c=[x]c+[y]c 因此内部可以直接保留加法器。

      • 优点:所有数与编码都是一一对应的。

  • 溢出 Overflow

    • 无符号数:只要最高位发生进位就算溢出。
      • 无符号数有补码(在减法的时候会加相反数的补码),但无法判断是否有溢出。
    • 有符号数:最高位是否有变化    ⟺    \iff 是否有溢出。
      • 对于正负相加(最高位符号不同),显然不会溢出。
      • 只有正正相加、负负相加才可能会溢出,这时判断符号位是否有变化即可。

随机生成矩阵:生成不可逆矩阵的概率为0,但行列式可能非常小,从而接近不可逆矩阵。

  • 大小关系判断:看 a − b a - b ab的答案:

    • 无符号数
      • 若没有溢出( carry flag, CF = 0 \text{carry flag, CF}=0 carry flag, CF=0),则 a ⩾ b a \geqslant b ab
      • 若溢出( CF = 1 \textrm{CF} = 1 CF=1),则 a < b a < b a<b.
    • 有符号数
      • 若符号位等于溢出标志( SF = OF \textrm{SF = OF} SF = OF),则 a ⩾ b a \geqslant b ab​;(证明时分类讨论即可)
      • 若符号位不等于溢出标志( SF ≠ OF \textrm{SF}\neq \textrm{OF} SF=OF),则 a < b a < b a<b.(可以同样用分类讨论,也可以用逆否命题)

    OF \textrm{OF} OF:溢出标志, SF \textrm{SF} SF:符号位(运算结果最高位)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值