# 二进制与十进制
# 1. 十进制基本概念
145 ,被理解为 “一百四十五” ,但是 145 并不是一个 “数” ,而只是一个数的代码,是这个数的 “书写方式” 。
三、叁、three、3、|||、III、***、 丙、等等很多书写方式,其实都可以表达同样的数学上的数字概念。
阿拉伯数字用 10 ,而罗马数字用 X ,来表达同一个数学概念。
我们所说的 “一百四十五” ,其实只是一种表达方式:阿拉伯式的表达,也即使十进制。
# 2. 十进制规则总结
归纳起来:
- 十进制数使用数字 0 ~ 9 ;
- 每一位的 “权” 是 。
- 用两位数可表示的最大数为 99 。也就是说,用 n 位数表示的范围是:0 ... n 个 9。共 10 的 n 次方个。
十进制的普及不是偶然的,但是我们可以使用不同的进制。
注意
进制不同,只是书写效果的不同。不同的书写方式,可以表达同一个 “数” 的数学概念。
# 3. 进制规则的推广
按照十进制中总结的数学规则,可以这样描述 八进制:
- 可用的数字为 0 ~ 7;
- 各位的权是:,,,, 等。
- 用两位数可表示的最大数为 77 。也就是说,用 n 位八进制数表示的范围是:0 ... n 个 7,共 个。
练习
描述六进、七进制和九进制。
十进制:
位数 | 第4位 | 第3位 | 第2位 | 第1位 |
---|---|---|---|---|
位权 | ||||
值 | 1000 | 100 | 10 | 1 |
七进制:
位 | 第4位 | 第3位 | 第2位 | 第1位 |
---|---|---|---|---|
位权 | ||||
等价十进制 | 343 | 49 | 7 | 1 |
# 4. 重点结论
同样的书写方式 200
:
- 十进制表示的数值是 2 个 100,而
- 七进制表示的数值 2 个 49
为了表达 50
这个数值:
- 十进制的书写格式是 50 ,而
- 七进制的书写格式是 101 ,
- 八进制的书写方式是 62
所以:
在不同的进制之间,同样的『书写方式』表达的数学值并不一样;
而要表达同样的数学值,『书写方式』是不一样的。
# 5. 二进制
二进制是这一概念推广的最终产物。
位 | 第8位 | 第7位 | 第6位 | 第5位 | 第4位 | 第3位 | 第2位 | 第位 |
---|---|---|---|---|---|---|---|---|
位权 | ||||||||
等价十进制 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
计算机根本不认识字母、数字、指令或程序,在它的内部只是一些电路,某个电路的节点上要么有很多电,要么几乎没有电。
在硬件上,硬件工程师不太容易表示:少点电
- 一些点
- 较多电
- 许多电
- 大量电
这样的多状态。 反而很容易也更稳妥地实现:有电
- 没电
的两状态。所以二进制的本质就是:用 1 和 0 可以代表每一段电路的真实状态。
因为早期的计算机一次处理 8 位,所以很自然的将 8 位大小的长度称为 字节。
用 8 位二进制数可以表示 256 个不同的值。如果 8 位都为 1,则对应的十进制值是 255;如果 8 为都是 0,则对应的十进制值是 0,从 0~255 一共有 256 种可能的状态(数据)。
1 byte = 8 bit
1 KB = byte
1 MB = KB = byte
1 GB = MB = KB = byte
= 1024
# 6. 十六进制
因为二进制数难于阅读,于是人们想出了一种更为简单的方式来表达相同的值。 从二进制转换成十进制设计到大量的数的操作,但是从二进制转换成十六进制就很简单。
十六进制中有十六个数字:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f:
- 用 a 表示比 9 大 1 的数,其值相当于十进制中的 10 ;
- 用 b 表示比 a 大 1 的数,其值相当于十进制中的 11 ;
- 用 c 表示比 b 大 1 的数,其值相当于十进制中的 12 ;
- 用 d 表示比 c 大 1 的数,其值相当于十进制中的 13 ;
- 用 e 表示比 d 大 1 的数,其值相当于十进制中的 14 ;
- 用 f 表示比 e 大 1 的数,其值相当于十进制中的 15 。
也就是说,有些数学概念上的数值,十进制中需要用两位数表示,但是十六进制用一位数就能表示
位 | 第4位 | 第3位 | 第2位 | 第1位 |
---|---|---|---|---|
位权 | ||||
等价十进制 | 4096 | 256 | 16 | 1 |
诀窍
:一个字节中的 8 位 2 进制数,分成两组 4 位,正好每一组 4 位二进制数等价于 1 位十六进制数。
← 为什么要配环境变量 Unicode 编码 →