2.2 位置化数字系统

在数字中符号所占据的位置决定了其表示的值。在该系统中,数字这样表示:

+-(Sk-1  ……S2S1S0 ……S-l)b

它的值是: n = +-(Sk-1 * bk-1 + …… + S1 * b 1 + S0 * b0 + S-1 * b-1 + …… + S-l * b-l)

S是一套符号集,;b是底(或基数),它等于S符号集中的符号总数。

 

2.2.1 十进制系统(以10为底)

十进制(decimal)来源于拉丁词根decem。

在该系统中,底b = 10, 并且用10个符号来表示一个数。符号集S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

1. 整数

计算方法:

n = +-(Sk-1 * 10k-1 + …… + S1 * 10 1 + S0 * 100 )

Sk是1个数码, b=10是底,k是数码的数量。

 

例2.1 十进制系统中使用位置量表示整数+224

N = + (2* 102 + 2* 10 1 + 4* 100 )

2.实数

n = +-(Sk-1 * 10k-1 + …… + S1 * 10 1 + S0 * 100 + S-1 * 10-1 + …… + S-l * 10-l)

与上面例子类似,用十进制数的各位数字乘以10的n次幂

2.2.2 二进制系统(以2为底)

二进制(binary)来源于拉丁词根bini

在该系统中,底b = 2,并且用两个符号来表示一个数,即S = {0, 1}。

数据和程序是以二进制模式(即位串)存储于计算机中的。这是因为计算机由电子开关制成,它们仅有开和关两种状态(即1和0)。

1.整数

N = +-(Sk-1 * 2k-1 + …… + S1 * 2 1 + S0 * 20 )

例2.4 十进制数25等值的二进制数(11001)

N = 1* 24 + 1* 23+ 0* 22 + 0 * 21 + 1 * 2  =>  N = 16 + 8 + 0 + 0 + 1 = 25

2. 实数

与整数类似

2.2.3 十六进制系统(以16为底)

尽管二进制系统用于存储计算机数据,但是它并不便于在计算机外部表示数字,因为二进制符号过长。而十进制又不能直接显示存储在计算机中的是什么。

所以,十六进制和八进制则是用来克服这个问题。

十六进制系统(hexadecimal)来源于希腊词根hex和拉丁词根decem。

在该系统中, 底b = 16并且用16个符号来表示一个数。字符集是S = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}。其中A, B, C, D, E, F分别等于10, 11, 12, 13, 14, 15。

1. 整数

2. 实数

以上两种数据类型计算方式都与二进制十进制相仿,只是将底b = 16。但十六进制的实数并不常见。

2.2.4 八进制系统(以8为底)

八进制(octal)来源于拉丁词根octo。

在该系统中,底b = 8并且用8个符号来表示一个数,S = {0, 1, 2, 3, 4, 5, 6, 7}

2.2.6 转换

1. 其他进制到十进制的转换

例2.8: 将二进制数110.11转换为十进制数

二进制11011
位置量2221202-12-2
各部分结果4 +2 +0 +0.5 +0.25
十进制6.75    

 

十六进制,八进制同理

2.十进制到其他进制的转换

1)转换整数部分

例2.11 将十进制数35转换为二进制数。从这个十进制数开始,一边连续寻找除以2得到的商和余数,一边左移。

35 % 2 = 1 –>二进制第一位

35  / 2 = 17 % 2 = 1 –>二进制第二位

17 / 2 = 8 % 2 = 0 –>二进制第三位

8 / 2 = 4 % 2 = 0 –>二进制第四位

4 / 2 = 2 % 2 = 0  ->二进制第五位

2 / 2 = 1 % 2 = 1 –>二进制第六位

1 / 2 = 0

最终结果: 100011

其他各个进制同理

2)转换小数部分

将小数部分连续乘以2,将结果的整数部分作为二进制位上的数,再取小数部分乘以2,如此反复,直到小数部分为0。

3)数码的数量

通过k = [logbN]来计算出数码的数量。

3. 二进制与十六进制的转换

这两个进制之间存在一种关系:二进制中的4位恰好是十六进制中的1位。

例2.19 将二进制数10011100010转换为十六进制

a).先将这个二进制数拆分,4位一个单位: 100 1110 0010.

b).二进制100 = 十进制4 = 十六进制4    
    二进制1110 = 十进制14 = 十六进制E      
    二进制0010 = 十进制2 = 十六进制2

c).最终结果为4E2

反之同理

4. 二进制与八进制的转换

它们之间存在这么一种关系:二进制中的3位恰好是八进制中的1位。

与二进制,十六进制互转同理

5. 八进制与十六进制转换

     -). 从八进制转到十六进制:先将八进制转到二进制。将位数重排成4位一组,找到十六进制的对等值

     -). 从十六进制转到八进制:先将十六进制转到二进制。将位数重排成3位一组,找到八进制的对等值。