数制与编码

   人们对10进制不会陌生,随便写一个数123,从右到左分别是个位、十位和百位,123的个位是3、十位是2、百位是1。但是如果问:“百位到底是什么位?”又有几个人能够答得上来呢?
   人类使用10进制也许和人的指头数量有关,人的手指头和脚趾头都是10个。
人类并不是全部使用10进制,也使用形形色色的进制。天朝以前从两到斤,就是使用16进制,16两为1斤,那时候半斤和八两是同一个意思。时间上,使用的60进制,每60秒为一分钟,每60分钟为1小时。从小时到天则使用24进制,每24小时为1天,7天为1星期,12个月为1年,如此等等,五花八门。人类使用这些进制,也许是因为日月星辰的变幻过于复杂的原因。
   现在,世界上不论什么地方,几乎都使用阿拉伯数字来记数。天朝人记数使用的数字是“〇一二三四五六七八九”,但是由于这些字容易被改动,还发明的大写的数字,它们是“零壹贰叁肆伍陆柒捌玖拾”。这大写的数字一旦写下来,如果被改了则十分容易发现。然而,这些记数法都十分不便,所以一般情况下多使用阿拉伯数字,像借据和收条等特殊的地方则使用大写。此外,还有罗马数字的记数法,使用起来也同样十分不便。
   计算机采用2进制,而不是人类使用的10进制。其理由有以下四点:
   1. 电路简单 实现二进制存储和运算的逻辑电路比较简单,容易使用开关电路(或逻辑电路)来实现。
   2. 可靠性高 2进制只有0和1两个数码,数据的传送和处理都不容易出错。用电路实现2进制运算时,电路可靠,抗干扰能力强。
   3. 运算简单 2进制的运算规则简单,不论加法规则还是乘法规则都一样,都比较简单,从而简化的实现运算规则的电路逻辑,提高了运算速度。相对而言,10进制的运算规则要复杂很多,例如九九乘法表就是10进制的乘法规则。
   4. 逻辑性强 逻辑代数中的值只有“真”和“假”,使用2进制十分容易表示逻辑值和实现逻辑运算。
   数制(Numeral System)就是用一组固定的数字和一套统一的规则来表示数码的方法。按照进位方式记数的数制称为位置记数法(Positional Notation)。阿拉伯记数法,人们十分熟悉,从小就使用。例如阿拉伯数字的10进制数的123,其含义一看便知,高位在左边,低位在右边,从右到左每一位“逢十进一”,采用的就是位置记数法。
   不论10进制、2进制还是R进制,都有两个要素,即基数和位权。
   基数(Radix)是指位置记数法中允许使用的基本数码的个数。例如10进制的基本数码个数是10个,包括0-9,基为10;2进制数的基本数码个数是2个,包括0和1,基为2。
   位权(weight)是指每一位数相当值的系数,对于R进制而言,从右到左各个数字位的权分别为R0、R1、R2、…,如果是小数的话,小数点以下各位权分别为101、102、103、…。例如,对于10进制数123来说,基数为10,其各个位的权从右到左分别为100、101、102、…,即个位的权是100、十位的权是101、百位的权是102…,也就是说123=1×102+2×101+3×100。对于2进制而言,与10进制相比,只需要将基R改为2即可,道理相同。
   常用的数制有以下几种:
   •10进制(Decimal Notation) 使用10个数字0-9,基为10,采用“逢十进一”。10进制是人通常使用的记数法,人们习惯使用它,并且对有关的运算规则已经十分熟悉。
   •2进制(Binary Notation) 使用2个数字0和1,基为2,“逢二进一”。计算机采用2进制表示,进行数据的存储和运算处理。
   •8进制(Octal Notation) 使用8个数字0-8,基为8,“逢八进一”。1个8进制位可以直接对应为3个2进制位,相互转换十分方便。比起2进制来,8进制在书写上要简短一些,早期不少书籍涉及2进制数时,多采用8进制书写。
   •16进制(Hexdecimal Notation) 使用16个数字0-9和A-F(或a-f),基为16,“逢十六进一”。与8进制类似,1个16进制位可以直接对应为4个2进制位,相互转换十分方便。比起2进制来,16进制在书写上要简短许多,现在涉及2进制数时,多采用16进制书写。
   为了提高存储利用率和加快计算的速度,同时也能够表示数值范围大精度高的数据,1985年IEEE提出了IEEE754标准,规定了浮点数的表示形式。

   从一定意义上讲,数制的本质也是一种编码,即将数值用2进制进行编码的一种形式。目前,整数广泛使用补码表示。编码是计算机进行计算的基础。

   读到这里的人应该能够回答百位是什么位这个问题了。

posted on 2016-05-23 18:29  海岛Blog  阅读(289)  评论(0编辑  收藏  举报

导航