口算二进制相互转换十六进制 以及拓展
Why?
hhhhh,没想到吧,我也没想到这东西还需要口算。
国内一些考试需要,既然看了就记录下来吧。
用十六进制实战
首先咱先来看下,一位十六进制数转换的数值。
十六进制 | 二进制 | 十进制 |
---|---|---|
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
A | 1010 | 10 |
B | 1011 | 11 |
C | 1100 | 12 |
D | 1101 | 13 |
E | 1110 | 14 |
F | 1111 | 15 |
其实也大可不必全背下来,8以下的我相信大家都记得差不多,
咱记住F就是1111,A是1010这两个锚点上下加减就够了。
二进制转十六进制
给出一个二进制数 101110101010110101
- 从右到左,每4位一组将二进制进行分组
10 1110 1010 1011 0101
, 为什么是4位一组,因为16等于2的4次方 - 将每组按十六进制转换
2 e a b 5
即 10 => 2, 1110 => e, 1010 => a, 1011 => b, 0101 => 5
- 最后将每组的转换值合并就可以获得对应进制的值
0x2eab5
十六进制转二进制
其实是对二进制转十六进制的逆向
- 给出一个十六进制数
0x2eab5
- 为每位数展开为二进制数,这里需要注意,转为二进制后不足4位的要高位补0
0010 1110 1010 1011 0101
即 2 => 0010, e => 1110, a => 1010, b=> 1011, 5 => 0101
- 最后将每组的转换值合并就可以获得转换后的二进制数
101110101010110101
其实扩展一下理论我们就可以得到
二进制转2^n进制
给出一个二进制数101110101010110101
- 从右到左,每n位一组将二进制分开
- 将每组按2^n进制转换
- 最后将每组的转换值合并就可以获得对应进制的值
2^n进制转二进制
其实是对二进制转2^n进制的逆向
- 给出一个2^n进制数
- 为每位数展开为二进制数,这里需要注意,转为二进制后不足n位的要高位补0
- 最后将每组的转换值合并就可以获得转换后的二进制数
最后咱来看下题目哈
问: 内存按字节编址从A5000H到DCFFFH的区域其存储容量为__KB.
笔算说是。。。
1 | x = 0xDCFFFF - 0xA5000 + 1 |
口算二进制相互转换十六进制 以及拓展