数字逻辑电路复习笔记:第一篇
“你认为Beatles为什么要歌唱‘当我64岁的时候’?”
进位计数制
十进制、十六进制、二进制互转应该已经烂熟于心了。
什么是编码、什么又是译码?
特定的二进制数码称为代码。
以一定的规则编制代码,用以表示十进制数值、字母、符号等的过程称为编码。
将代码还原成所表示的十进制数、字母、符号等的过程称为解码或译码。
小数点的转换方法
对于十进制小数,如何转换成二进制小数?
将小数位乘以2,若大于1,则记为1,将其减去1;若小于1,则记为0。之后重复该循环就行。当然,不是所有小数都可以表示成有限位的二进制小数。
那对于三进制小数呢?比如(121.2)3使用二进制如何表示?
负数的表示
负数也是很头疼的话题。反码、补码……学《大学计算机》的时候就被折磨过了。
补码 Complement Number System
十进制补码就是10's complement
,二进制补码就是two's complement
。这里着重讨论二进制补码。
对于二进制补码,最高有效位(MSB)为符号位。此时,MSB的权为-2n-1,可表示数的范围为。
要记住,二进制补码仅有一种0的表示方法。为什么?因为符号位溢出了。
反码
还有一种表示方法叫做“基数减一补码”,即二进制反码one's complement
,与上面区分。
在反码中,0有两种表示方法。
溢出
对于加法,如果加数的符号相同,而和的符号与加数的符号不同,则出现了溢出。
对于减法,如果被减数和取补后减数的符号相同,而差的符号与上面不同,则出现了溢出。
格雷码
格雷码的相邻两个数字表示出来仅有一位不同,这可以减少出错的可能性。
如何从普通二进制数生成格雷码?只需要将普通二进制数前面补上0,然后相邻两位做异或就行。
举个例子。对于1110
即十进制的14,如何生成格雷码?
1 | (0) 1 1 1 0 |
从格雷码生成普通二进制数,就是刚刚的操作进行逆运算。
纠错码
为了确保传输的数据无误,我们采用信息位+校验位的方式来进行数据传输,这就是纠错码。对于一位的错误检测,我们可以采用奇校验码或者偶校验码,将最后一位(LSB)作为校验位。
最小距离
如果所有可能的编码字对之间的最小距离为2,则可以检测全部单个差错。
汉明码
汉明码每一位从1到2i-1进行计数。在任何情况下,位置是2的幂的那些位都是校验位,其余位为信息位。