进制
在实际的应用和考试中只需要掌握二进制、十进制、十六进制即可,八进制不会用到的。尤其是二进制和十六进制的相互转化尤为的重要。
关于十六进制需要记住以下的几条:
A+6=10H
B+5=10H
C+4=10H
D+3=10H
E+2=10H
F+1=10H
求十六进制的负数
所有的运算都将基于下表,请牢记下表,将会极高地提升准确度和速度,就酱。 0~15以内的十进制、二进制和十六进制的转换关系
对于大于15的十进制数的转换
所谓十六进制,就是数到16就进一位,那么
16D = 10H
继续,对十进制的数除16,商为十位,余数为个位,如
24D = 16×1D + 8D = 18H
31D = 16×1D + 15D = 1FH
负数的十进制数的转换
不要用除余法等智障的方法计算,最机智的做法永远是由十进制转换为十六进制再转换为二进制,而且在实际的应用和考试中,基本是以考察转换为十六进制为主的。
因为求的是负数的进制转换,在码制一节中本喵讲过了,最有意义的是补码,所以考试中一定会问负数的补码进制转换,下面以一个例题说明解法。
【例】请以一个字节8位的形式表示-100的补码____H。
【分析】先求出+100的十六进制表示形式:
100D = 16×6D + 4D = 64H
再用64H减去100H,求得结果9CH。
如果对计算能力不自信,记住上面的表**可以直接找到对应的数值,比如
4对应的C。但是切记,因为有个位借位所以十位的值减一,也就是说6对应的A减去1得9。
如果没有借位,也就是说个位为零,比如60H,那么十位就不需要再减一,直接是A0H即可。实际考试中个位出现0的情况很少,机智的你们善假于物,能求出即可。
【练习】
$$[-13]_补=0F3H$$
24.125D = 18.2H
| 数值 | 助记 | 二进制(8位) | 十六进制 | 数值 | 助记 | 二进制(8位) | 十六进制 | |
|---|---|---|---|---|---|---|---|---|
| 0 | 0000 | 0 | 8 | $$2^3$$ | 1000 | 8 | ||
| 1 | 0001 | 1 | 9 | $$2^3+1$$ | 1001 | 9 | ||
| 2 | 0010 | 2 | 10 | $$2^3+10_B$$ | 1010 | A | ||
| 3 | $$2^2-1$$ | 0011 | 3 | 11 | $$2^3+11_B$$ | 1011 | B | |
| 4 | $$2^2$$ | 0100 | 4 | 12 | $$2^3+2^2$$ | 1100 | C | |
| 5 | $$2^2+1$$ | 0101 | 5 | 13 | $$2^3+2^2+1$$ | 1101 | D | |
| 6 | $$2^2+10_B$$ | 0110 | 6 | 14 | $$2^4-10_B$$ | 1110 | E | |
| 7 | $$2^3-1$$ | 0111 | 7 | 15 | $$2^4-1$$ | 1111 | F |
十六进制转二进制
常用在移位指令中,在编程、分析题中会有出现。还是那句话,十六进制直接转二进制,直接记住即可。
因为每4位二进制对应的是1位十六进制($$2^4=16$$),所以根据十六进制数直接按顺序写下二进制即可。
比如6E8CH转二进制:
| 6 | E | 8 | C |
|---|---|---|---|
| 0110 | 1110 | 1000 | 1100 |
所以结果是0110 1110 1000 1100