信息的表示和处理
文章目录
本文总结计算机中信息的表示和处理方法。
2 信息的处理和表示
2.1 信息的存储
2.1.0 数字的编码
2.1.0.1 无符号数
无符号数是基于传统的二进制标识法,可以表示大于等于0的数字。
2.1.0.2 二进制补码(two’s-complement)
二进制补码用来表示有符号整数的常见形式。
2.1.0.3 浮点数
浮点数是以二进制为基数的实数科学计数法形式。
2.1.1 进制转换
2.1.1.1 十进制的转换
十进制转换为其他进制的方法均使用辗转相除法即可。例如: 一个十进制数x要转换为十六进制数,可以表示为:x = q * 16 + r 。然后通过q反复进行这个过程,直到q为0为止。
2.1.1.1.1 十进制转十六进制
例如:
| q | subprocess | r |
|---|---|---|
| 314156 = | 19634 * 16 + 12 | (C) |
| 19634 = | 1227 * 16 + 2 | (2) |
| 1227 = | 76 * 16 + 11 | (B) |
| 76 = | 4 * 16 + 12 | (C) |
| 4 = | 0 * 16 + 4 | (4) |
最终得到结果:314156 = 0x4CB2C。
2.1.1.1.2 十进制转二进制
例如:
| q | subprocess | r |
|---|---|---|
| 29 = | 14 * 2 + 1 | (1) |
| 14 = | 7 * 2 + 0 | (0) |
| 7 = | 3 * 2 + 1 | (1) |
| 3 = | 1 * 2 + 1 | (1) |
| 1 = | 0 * 2 + 1 | (1) |
最终得到结果:29 = 11101。
2.1.1.2 十六进制的转换
2.1.1.2.1 十六进制转十进制
十六进制数转换为十进制数,只需要将对应的十六进制位乘以16的幂,然后相加即可。例如: $ 0xACB = 10 * 16^2 + 12 * 16^1 + 11 * 16^0 = 10 * 256 + 12 * 16 + 11 = 2763$
2.1.1.2.2 十六进制转二进制
十六机制和二进制之间的对应关系如下: 每位十六机制数对应4bit二进制。可以使用如下两种方法进行转换。
- 方法1:切分法。即使用如下对照表进行转换即可。
| Hex | Bin | Hex | Bin |
|---|---|---|---|
| 0 | 0000 | 8 | 1000 |
| 1 | 0001 | 9 | 1001 |
| 2 | 0010 | A | 1010 |
| 3 | 0011 | B | 1011 |
| 4 | 0100 | C | 1100 |
| 5 | 0101 | D | 1101 |
| 6 | 0110 | E | 1110 |
| 7 | 0111 | F | 1111 |
例如: 针对0x2DFB,转换方法如下:
2 -> 0010
D -> 1101
F -> 1111
B -> 1011
因此0x2DFB(H) = 0010 1101 1111 1011(B)
- 方法2:先将十六机制转换为十进制,然后再将十进制转换为二进制。
十六进制转换为十进制的方法见2.1.1.2.1节。
十进制转换为二进制的方法见2.1.1.1.2节。
温馨提示:推荐使用方法1,简单快捷。
2.1.1.3 二进制的换换
2.1.1.3.1 二进制转十进制
二进制转换为十进制的方法和十六进制转换为10进制的方法类似。例如:
$ 1111 1011 $
$ = 1 * 2^7 + 1 * 2^6 + 1 * 2^5 + 1 * 2^4 + 1 * 2^3 + 0 * 2^2 + 1 * 2^1 + 1 * 2^0 $
$ = 1 * 128 + 1 * 64 + 1 * 32 + 1 * 16 + 1 * 8 + 0 * 4 + 1 * 2 + 1 * 1 $
$ = 128 + 64 + 32 + 16 + 8 + 0 + 2 + 1 $
$ = 251 $
2.1.1.3.2 二进制转十六进制
二进制转换为十六进制的方法为十六进制转换为二进制的逆过程,方法参考2.1.1.2.2节。
唯一需要注意的地方就是:
若使用切分法二进制转换为十六进制的时候,需要从右往进行切分,每4bit二进制对应一位十六进制数。不足4位的在左侧补0。
例如:针对二进制数1 1010 1001 0001
- 先将二进制数的数位补为4的整数倍。1 1010 1001 0001 -> 0001 1010 1001 0001
- 按照对照表进行转换:
0001 -> 1(H)
1010 -> A(H)
1001 -> 9(H)
0001 -> 1(H) - 最终得到结果为: 1 1010 1001 0001 = 0x1A91(H)