各种码制知识
格雷码Gray code
是表达二进制数的又一种编码方式,有多种编码形式,表1-1给出了一种常用的编码方式,它又称循环码。由表可见,在从“0”开始顺序排列的编码中,每一位各以一个固定周期进行循环,并在一个循环周期内以其中心为对称。例如,最低位的循环周期是“0110”,第二位的循环周期是“00111100”,第三位的循环周期是“0000111111110000”,……。这种编码方式虽然不易被阅读理解,但其优点是在任何两个相邻的数所对应的代码中只有一位是不同的,这就彻底防止了计数过程中尖峰干扰(glitch)的出现。
表1-1 二进制编码对照表
等效十进制值 | 8位二进制数 | BCD码 | 格雷码 |
0 | 0000 0000 | 0000 | 0000 0000 |
1 | 0000 0001 | 0001 | 0000 0001 |
2 | 0000 0010 | 0010 | 0000 0011 |
3 | 0000 0011 | 0011 | 0000 0010 |
4 | 0000 0100 | 0100 | 0000 0110 |
5 | 0000 0101 | 0101 | 0000 0111 |
6 | 0000 0110 | 0110 | 0000 0101 |
7 | 0000 0111 | 0111 | 0000 0100 |
8 | 0000 1000 | 1000 | 0000 1100 |
9 | 0000 1001 | 1001 | 0000 1101 |
10 | 0000 1010 | 0001 0000 | 0000 1111 |
11 | 0000 1011 | 0001 0001 | 0000 1110 |
12 | 0000 1100 | 0001 0010 | 0000 1010 |
13 | 0000 1101 | 0001 0011 | 0000 1011 |
14 | 0000 1110 | 0001 0100 | 0000 1001 |
15 | 0000 1111 | 0001 0101 | 0000 1000 |
16 | 0001 0000 | 0001 0110 | 0001 1000 |
… | … | … | … |
… | … | … | … |
255 | 1111 1111 | 0010 0101 0101 | 10000000 |
格雷码与二进制码之间的转换
格雷码和二进制码的互换可以很容易地利用“异或”门实现。二进制码的最高位与格雷码的最高位相同,若二进制码的最高位是0,格雷码的最高位也是0,然后连续从最高位(MSB)读到最低位(LSB),相邻两位数值变化时,就产生一个“1”,没有变化就产生一个0。例如:10位二进制数1011100011变成格雷码就是1110010010。
格雷码至二进制码的变换恰好是二进制码至格雷码的反变换。二进制码的最高位与格雷码的最高位一样;然后连续从最高位读到最低位,若后一位是1,则二进制码中后一位与前一位相反。如格雷码的后一位是0,则二进制码中后一位与前一位相同。例如,如格雷码是1011,则对应的二进制码为1101。同样,12位格雷码101101011101在二进制中就是110110010110。
常用双极性代码
数 | 十进制数 | 符号-数值 | 2的补码 | 偏移二进制 | 1的补码 (反码) | |
正基准 | 负基准 | |||||
+7 | +7/8 | -7/8 | 0111 | 0111 | 1111 | 0111 |
+6 | +6/8 | -6/8 | 0110 | 0110 | 1110 | 0110 |
+5 | +5/8 | -5/8 | 0101 | 0101 | 1101 | 0101 |
+4 | +4/8 | -4/8 | 0100 | 0100 | 1100 | 0100 |
+3 | +3/8 | -3/8 | 0011 | 0011 | 1011 | 0011 |
+2 | +2/8 | -2/8 | 0010 | 0010 | 1010 | 0010 |
+1 | +1/8 | -1/8 | 0001 | 0001 | 1001 | 0001 |
0 | 0+ html符号代码对照表 | 0- | 0000 | 0000 | 1000 | 0000 |
0 | 0- | 0+ | 1000 | (0000) | (1000) | 1111 |
-1 | -1/8 | +1/8 | 1001 | 1111 | 0111 | 1110 |
-2 | -2/8 | +2/8 | 1010 | 1110 | 0110 | 1101 |
-3 | -3/8 | +3/8 | 1011 | 1101 | 0101 | 1100 |
-4 | -4/8 | +4/8 | 1100 | 1100 | 0100 | 1011 |
-5 | -5/8 | +5/8 | 1101 | 1011 | 0011 | 1010 |
-6 | -6/8 | +6/8 | 1110 | 1010 | 0010 | 1001 |
-7 | -7/8 | +7/8 | 1111 | 1001 | 0001 | 1000 |
-8 | (1000) | (0000) | ||||
各种双极性代码的相互关系
以右为准 到下 | 符号-数值 | 2的补码 | 偏移二进制 | 1的补码(反码) |
符号-数值 | 不变 | 若MSB=1则其余各位取反加1 | MSB取反,若取反后MSB=1 则其余各位取反加1 | 若MSB=1,其余各位取反 |
2的补码 | 若MSB=1则其余各位取反加1 | 不变 | MSB取反 | 若MSB=1,则LSB加1 |
偏移二进制 | MSB取反,若取反后MSB=0 则其余各位取反加1 | MSB取反 | 不变 | MSB取反,若取反后MSB=0 则LSB加1 |
1的补码(反码) | 若MSB=1,其余各位取反 | 若MSB=1,则LSB减1 | MSB取反,若取反后MSB=1 则其余各位加1 | 不变 |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论