做日本淘宝网站/搜狗关键词排名查询
文章目录
- 数字与编码 Number and Code
- 数字系统 Number System
- 数和编码 Number and Code
数字与编码 Number and Code
数字系统 Number System
-
组成
- 基 Base:不同数码个数。
- 系数 Coefficient:相当于每一位上出现的数码。
- 位权 Power:数码的个数。
-
进制转换
-
不同进制的数可以理解为多项式:
x=K1Rn+K2Rn−1+⋯+K0R0.K−1R−1+K−2R−2+⋯+K−mR−mx=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+K2Rn−1+⋯+K0R0.K−1R−1+K−2R−2+⋯+K−mR−m注意:这个多项式是在十进制下表达的。
-
十进制转换成其他进制:
-
前提条件:不同进制下不能混合运算,那么在什么时候实现的进制转换呢?
-
对于整数部分:不断对RRR取余,后除以RRR,直到为000.
对RRR取余,除以RRR都是在十进制下运算的,只是每一次的余数变成了RRR进制。
-
对于小数部分:不断乘以RRR,后截取整数部分,直到为000,或出现循环。
也是只有在整数部分的时候才转换成了RRR进制。
-
-
其他进制转换成十进制:
-
每一位上乘以RnR^nRn.
对于每一位上的数码,先转换成十进制,再在十进制下相乘。
-
-
所以,进制转换只能实现在数码到数码的转换,我们只是想办法提取每一位的数码。
-
数和编码 Number and Code
-
数和编码的区别
- 数无长度限制,数的编码有限。(否则会溢出 Overflow)
- 表达形式不同。(如负数的反码、补码)
-
群(为了更清楚的讲解编码,有必要引出“群”的概念)
-
一个集合及其二元运算(以下以‘+’代替)满足一下性质称为群。
-
封闭性:∀a,b∈S,⇒a+b∈S\forall a,b \in S, \Rightarrow a+b\in S∀a,b∈S,⇒a+b∈S.
-
结合律:(a+b)+c=a+(b+c)(a+b)+c=a+(b+c)(a+b)+c=a+(b+c).
-
幺元(单位元):∃e∈S,s.t. a+e=a,∀a∈S\exist e \in S,\textrm{s.t.} \ \ a+e=a, \forall a \in S∃e∈S,s.t. a+e=a,∀a∈S.
-
逆元:∃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∃a−1∈S,s.t. a+a−1=e,∀a∈S.
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:幺半群。
-
-
带符号数编码(无符号数,编码和数相同)
- 目的:设计出一种同态映射的编码系统。
-
符号幅度表示法 Sign Magnitude(SM)
- 用最高位表示符号,剩下二进制位表示数的绝对值。
- nnn位编码范围:−(2n−1−1)∼(2n−1−1)-(2^{n-1}-1) \sim (2^{n-1}-1)−(2n−1−1)∼(2n−1−1).
- 缺点
- 不是一一映射,000有两种编码。
- 很显然也不是同态映射,比如一正一负两数相加就不行。
- 运算时要考虑很多情况,就只能靠硬件解决,消耗资源。
- 实际上还是无符号数的运算。
-
反码 1’s Complement
-
正数编码不变,负数取反。(x+(−x)=2n−1x+(-x)=2^n-1x+(−x)=2n−1)
-
数和编码的转换(x<0x<0x<0):
- 数→\to→编码:xone=2n−1−(−x)x_{one}=2^n-1-(-x)xone=2n−1−(−x).
- 编码→\to→数:x=−(2n−1−xone)x=-(2^n-1-x_{one})x=−(2n−1−xone).
-
nnn位编码范围:−(2n−1−1)∼(2n−1−1)-(2^{n-1}-1) \sim (2^{n-1}-1)−(2n−1−1)∼(2n−1−1).
-
是否满足同态映射:若x<0,y<0x<0,y<0x<0,y<0,则
KaTeX parse error: Undefined control sequence: \ at position 19: …\begin{aligned}\̲ ̲ [x]_c+[y]_c&=…
(2n−12^n-12n−1和2n+1−12^{n+1}-12n+1−1在nnn位编码下相同)因此可以通过适当的调整满足同态映射。
同时可以发现,符号位也参与了运算,所以是带符号数运算。
-
缺点:
- 000有两种编码:0000和1111(假设n=4n=4n=4).
-
-
补码 2’s Complement
-
考虑到反码经过加1满足同态映射,所以试一试(?)补码=反码+1.
-
x+(−x)=2nx+(-x)=2^nx+(−x)=2n.
-
nnn位编码范围:−2n−1∼(2n−1−1)-2^{n-1} \sim (2^{n-1}-1)−2n−1∼(2n−1−1).
-
数和编码的转换(x<0x<0x<0):
- 数→\to→编码:xtwo=2n−(−x)x_{two}=2^n-(-x)xtwo=2n−(−x).
- 编码→\to→数:x=−(2n−xtwo)x=-(2^n-x_{two})x=−(2n−xtwo).
-
是否满足同态映射:若x<0,y<0x<0,y<0x<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=2n+1+[x]c−[y]c=2n+1+(2n−x)−(2n−y)=2n+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+(2n−x)−(2n−y)=2n+1−(x−y)=[x−y]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=[x−y]c=[x+(−y)]c=[x]c+[−y]c 因此内部可以直接保留加法器。 -
优点:所有数与编码都是一一对应的。
-
-
溢出 Overflow:
- 无符号数:只要最高位发生进位就算溢出。
- 无符号数有补码(在减法的时候会加相反数的补码),但无法判断是否有溢出。
- 有符号数:最高位是否有变化⟺\iff⟺是否有溢出。
- 对于正负相加(最高位符号不同),显然不会溢出。
- 只有正正相加、负负相加才可能会溢出,这时判断符号位是否有变化即可。
- 无符号数:只要最高位发生进位就算溢出。
随机生成矩阵:生成不可逆矩阵的概率为0,但行列式可能非常小,从而接近不可逆矩阵。
-
大小关系判断:看a−ba - ba−b的答案:
- 无符号数:
- 若没有溢出(carry flag, CF=0\text{carry flag, CF}=0carry flag, CF=0),则a⩾ba \geqslant ba⩾b;
- 若溢出(CF=1\textrm{CF} = 1CF=1),则a<ba < ba<b.
- 有符号数:
- 若符号位等于溢出标志(SF = OF\textrm{SF = OF}SF = OF),则a⩾ba \geqslant ba⩾b;(证明时分类讨论即可)
- 若符号位不等于溢出标志(SF≠OF\textrm{SF}\neq \textrm{OF}SF=OF),则a<ba < ba<b.(可以同样用分类讨论,也可以用逆否命题)
OF\textrm{OF}OF:溢出标志,SF\textrm{SF}SF:符号位(运算结果最高位)
- 无符号数: