1.4 数制及不同数制之间的转换

1.4.1 进位计数制

按进位的方法进行计数,称为进位计数制。为了电路设计的方便,计算机内部使用的是二进制计数制,即“逢二进一”的计数制,简称二进制(Binary)。但人们最熟悉的是十进制,所以计算机的输入/输出也要使用十进制数据。此外,为了编制程序的方便,还常常用到八进制和十六进制。下面介绍这几种进位制和它们相互之间的转换。

1.十进制(Decimal)

十进制有两个特点:其一是采用0~9共10个阿拉伯数字符号;其二是相邻两位之间为“逢十进一”或“借一当十”的关系,即同一数码在不同的数位上代表不同的数值。我们把某种进位计数制所使用数码的个数称为该进位计数制的“基数”,把计算每个“数码”在所在位上代表的数值时所乘的常数称为“位权”。位权是一个指数幂,以“基数”为底,其指数是数位的“序号”。数位的序号为以小数点为界,其左边(个位)的数位序号为0,向左每移一位序号加1,向右每移一位序号减1。任何一个十进制数都可以表示为一个按位权展开的多项式之和,如数5678.4可表示为

5678.4=5×103+6×102+7×101+8×100+4×10-1

其中,103、102、101、100、10-1分别是千位、百位、十位、个位和十分位的位权。

2.二进制(Binary)

二进制也有两个特点:数码仅采用“0”和“1”,所以基数是2;相邻两位之间为“逢二进一”或“借一当二”的关系。它的“位权”可表示成2i,2为其基数,i为数位序号,取值法和十进制相同。任何一个二进制数都可以表示为按位权展开的多项式之和,如数1100.1可表示为

1100.1=1×23+1×22+0×21+0×20+1×2-1

3.八进制(Octal)

和十进制与二进制的讨论类似,八进制用的数码共有8个,即0~7,则基数是8;相邻两位之间为“逢八进一”和“借一当八”的关系,它的“位权”可表示成8i。任何一个八进制数都可以表示为按位权展开的多项式之和,如八进制数1537.6可表示为

1537.6=1×83+5×82+3×81+7×80+6×8-1

4.十六进制(Hexadecimal)

和十进制与二进制的讨论类似,十六进制用的数码共有16个,除了0~9外又增加了6个字母符号A、B、C、D、E、F,分别对应了10、11、12、13、14、15;其基数是16,相邻两位之间为“逢十六进一”和“借一当十六”的关系,它的“位权”可表示成16i。任何一个十六进制数都可以表示为按位权展开的多项式之和,如数3AC7.D可表示为

3AC7.D=3×163+10×162+12×161+7×160+13×16-1

5.任意的K进制

K进制用的数码共有K个,其基数是K,相邻两位之间为“逢K进一”和“借一当K”的关系,它的“位权”可表示成Kii为数位序号。任何一个K进制数都可以表示为按位权展开的多项式之和,该表达式就是数的一般展开表达式:

其中,N为基数,Ak为第K位上的数码,Nk为第K位上的位权。