计算机科学导论-数字系统
引言
数字系统(数 码系统)定义了如何用独特的符号来表示一个数字。在不同的系统中有不同的表示方法。例如:(2A)16 和(52)8都是指同样的数量(42)10。
我们可以用符号来表示数字,但是我们的符号是有限的。需要重复并组合它们来创建单词。下面我们看看位置化数字系统,如何通过数字,位置来表示数字。
位置化数字系统
位置化数字系统中,在数字中符号所占据的位置决定了其表示的值。在该系统中,数字这样表示:
± ( Sk-1 S2 S1 S0 . S-1 S-2 S-l ) b
它的值是:
n = ± Sk-1 × bk-1 + + S-1 × b-1 + S-2 × b-2 + S-l × b-l
- S 是一套字符集。
- b 是底(或基数),它等于S符号集中的符号总数,其中Si指该符号的位置是i。
- b 的幂可以从一个方向由0到K-1,还可以从另一个方向由-1到-L。
十进制系统
在该系统中:
- 底b = 10。
- 用10个符号来表示一个数, 符号集S = {0,1,2,3,4,5,6,7,8,9}。
在十进制系统中,数字写为:
±(Sk-1 S2 S1 S0 . S-1 S-2 S-l)10
整数(不带小数)
N = ± Sk-1 × 10k-1 + Sk-2 × 10k-2 + + S2 × 102 + S1 × 101 + S0 × 100
- Si 是一个数码。
- b = 10 是底。
- k 是数码的数量。
使用位置量
-
用10的幂表示十进制数字,下图显示了在十进制系统中使用位置量表示整数。
image.png
例1 :在十进制系统中使用位置量表示正整数+224
由上图可知,+224是三位数需要三个位置量,
个数位(k=1) 4 = 4 × 100=1-1
十位数(k=2) 20 = 2 × 101=2-1
百位数200 = 2 × 102=3-1
例2 :在十进制系统中使用位置量表示负整数-7508
由上图可知,-7508是四位数需要四个位置量
个位数(k=1) 8 = 8 × 100=1-1
十位数(k=2) 0 = 0 × 101=2-1
百位数(k=3) 4 = 4 × 102=3-1
千位数(k=4) 7 = 7 × 103=4-1
二进制、八进制、十六进制都是上面的逻辑,不同点在于:
- 底换成了2、8、16。
-
符号变成了二进制:{0,1} ;八进制:{0,1,2,3,4,5,6,7};十六进制:{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}
image.png
四种位置化系统中的数字比较
进制转换
其他进制到十进制的转换
-
将数码乘以其在源系统中的位置量并求和便得到十进制中的数。思路如下图:
image.png
例1 将二进制数 (110.11)2 转换为十进制数6.75
image.png例2 将十六进制数(1A.23)16 转换成十进制数26.137
image.png- 注意这个十进制数表示并不精确,因为3 × 16-2=0.01171875。四舍五入成3位小数(0.012)也就是说3 × 16-2≈0.012。数字转换时我们需要指明允许保留几位小数。
例3 将八进制数(23.17)8 转换为十进制数。
image.png- 在十进制中(23.17)8 ≈ 19.234。再一次把7 × 8-2 = 0.109375四舍五入。
十进制到其他进制的转换
- 十进制转换其他进制需要分成整数部分和小数部分。
整数部分 可使用连除
image.png- 我们称十进制数的整数部分为源,已转换号的整数部分的数为目标。我们先创建一个空目标。接着反复除源并得到商和余数。余数插入目标的左边,商变为新的源。如下图
image.png
小数部分 可使用连乘
- 我们称十进制数的小数部分为源,已转换好的整数部分的数为目标。我们先创建一个空目标,接着反复乘源并得到结果。结果的整数部分插入目标的右边,而小数部分成为新的源如下图
转换十进制的小数部分 -
每次重复中如何得到目标,过程如下图
转换十进制的小数部分到其他进制
数码的数量
把数字从十进制转换到其他进制之前,我们需要通过k = [logbN]知道数码的数量。[x] 意味着最小的整数大于或等于x。也称为x的高限,N是该整数的十进制值。如下所示:
二级制--十六进制转换
-
二进制中的4位恰好是十六进制中的1位,如下图
image.png
二进制--八进制转换
-
二进制中的3位恰好是八进制中的1位
image.png
八进制 -- 十六进制的转换
-
使用二进制系统为中介系统。
image.png
步骤如下
- 从八进制到十六进制,先将八进制转到二进制。将位数重排成4位一组,找到十六进制的对等值。
- 从十六进制转到八进制,我们先将十六进制转到二进制。将位数重排成3位一组,找到八进制的对等值。
非位置化数字系统
非位置化数字系统仍然使用有限的数字符号,每个符号有一个值。但是符号所占用的位置通常与其值无关——每个符号都是固定的。
罗马数字是非位置化系统的好例子。
全文摘自《计算机科学导论》