C 学习笔记¶
第零章 ¶
0.1 信息在计算机中的表示
¶
-
用0和1表示各种信息
- 逻辑门电路:开(高电位)对应1,关(低电位)对应0
- 二进制:取值只能是0或1,一位称为一个“比特 (bit)”,简写作 b ;八位称为一个“字节 (byte)”,简写作 B
- 8b = 1B, 1024B = 1KB, 还有 MB, GB, TB...
-
0和1足以表示和传播各种信息
- 文字编码:ASCII, UTF-8...
- 图像编码:RGB
- 音频编码:采样
- ...
0.2 数制转换
¶
进制只是数的表示形式,数本身没有进制之分。
0.2.1 K进制 \(\rightarrow\) (十)进制¶
设一个 \(n+1\) 位的 \(K\) 进制数为 $$\overline{A_n A_{n-1} A_{n-2} … A_2 A_1 A_0}, $$ 则其 大小 为 $$A_n×K^n + A_{n-1}×K^{n-1} +…+ A_0×K^0. $$ 转换成十进制即在相加的过程中使用十进制的进位规则。
例
将十六进制数 AFD2 转换成十进制数。 AFD2 \( = 2 × 16^0 + 13 × 16^1 + 15 × 16^2 + 10 × 16^3 = 45010. \)
0.2.2 (十)进制 \(\rightarrow\) K进制 (长除取余法)¶
给定一个整数 \(N\)(进制不重要)和进制 \(K\),那么 \(N\) 可以表示为
\(N\) 除以 \(K\) 的商为 \(K^{n-1}×A_n + K^{n-2}×A_{n-1} +…+ K^0×A_1\),余数为 \(A_0\);商再除以 \(K\) 的商为 \(K^{n-2}×A_n + K^{n-3}×A_{n-1} +…+ K^0×A_1\),余数为 \(A_1\) … 以此类推,直到商为0为止,就能依次求得 \(A_0、A_1…A_{n-1}、A_n\).
显然 \(A_i < K (i = 0,1,…,n)\). 得到的 \(K\) 进制数就是:$$A_n A_{n-1} A_{n-2} … A_2 A_1 A_0. $$
例
将 \(123\) 转换成二进制数。
0.3 K进制小数
¶
K进制小数 \(0.A_0 A_1 …A_n\) 的值是:$$A_0×K^{-1} + A_1×K^{-2} +…+ A_n×K^{-(n+1)}. $$
例
\((0.12)_{10} = 1 × 10^{-1} + 2 × 10^{-2}\)
\((0.1)_3 = 1 × 3^{-1}\) 表示成10进制就是无限循环小数
可见,\(n\) 进制下的有限位小数,在 \(m\) 进制下可能就是无限位小数,无法精确表示。 计算机用二进制表示小数,所以在计算机中,很多小数都是无法精确表示的,小数运算就有误差。