0.2、什么是“进制”

By | 2014年11月4日

今天,我们来谈一下什么是进制。

进制即数的进位制,其实你在日常生活中早已用到了相关的知识,只不过你没有意识到而已。

要搞清楚什么是进制,我们需要先弄清楚什么叫做数字。

在很久很久以前,还并没有数字的概念。随着人类的发展,迫切的需要一种方法来统计(表示,衡量?)某些东西的数量。

我们假设有一位聪明的牧羊人,他每天晚上他都需要检查羊是否丢失,但是由于这时候没有数字,他就想出来了这样一个的方法:

用一块石头代表一头羊,这样每天早上放羊的时候,每从羊圈里出来一只羊,他就拿一块石头放到羊圈旁边。晚上进去一只羊,就扔出一块石头。如果某天所有羊都进了羊圈,但是羊圈旁边还有石头,说明今天有羊丢失了。

这时候,数的概念就已经出现了。

除了用石头,还有使用绳结计数的方法(毕竟背着一筐石头到处跑是一件很麻烦的事情),不管是绳结还是石头,他们表示数量的方法都是一种对应的关系。

之后的人们抽象出了一些符号,让抽象的符号与实际的物体同样形成一种对应的关系,数字产生了!

数字有两种表示的方法,一种是最原始的一一对应关系,比如表示有两个苹果,我们就用xx表示,四只猫,就用xxxx表示。显然这种方法随着数字的增大会变得越来越长,这显然是不方便的

之后又出现了更加抽象的概念,用一个符号去表示数,例如a表示上面的x,b表示上面的xx,以此类推,xxxx只用d就能表示(这时候请把abc看做数字,而不是字母)

但是这种计数方法同样有着缺陷:如果我们要表示一个很大的数字就需要很多的符号。

从a一直到z,我们也只能表示26这个数字,那么比26更大的数,例如27怎么办???

我们当然可以继续创造符号,比如27用α来表示,28用β来表示。

也可以用另一个方法,那就是进位制。你可能已经想到了,我们可以用aa来表示27,ab来表示28,ac就是29了。

这时,同样是a这个符号,在不同的位置就代表了不同的数字。这样我们就可以用有限的符号来表示很大的数字。

这种表示数的方法一直沿用至今,也就是位值制记数法

现在我们来看看我们日常生活中使用的数字。

阿拉伯数字一共只有十个字符,不用我教你也可以倒过来背,他就是

0、1、2、3、4、5、6、7、8、9

但是我们却可以用它表示一个很大的数字,比如一万:10000

1在不同的位置,身份就发生了巨大的变化。不用我说你也知道:

1在个位代表一

1在十位则代表十

这也是位值制的特点:每个数码所表示的数值,不仅取决于这个数码本身,而且取决于它在记数中所处的位置

现在我们再来看看10到底是个什么东西

为了便于解释,请让我们创造一个符号“A”,他代表比9大1的数(也就是10)

我们使用的阿拉伯数字,每一个数字都由一个或多个位组成,越往右,位置越低,最低便是个位,个位上的数字就是它本来的大小。往左便是十位,很显然,十位上的数字不再是他原来的大小,而是乘了一个A,1在十位上的意义其实是一个A,同理2放在十位便是两个A

这里的A,也就是计数单位,称作位权。

现在再看看,我们常用的数字有什么特点,当然不是怎么写。。。

1-9一共10个数字,遇到比9大的数字A(10),因为所有符号已经用完,只能在十位上表示数,也就是说“往十位上进了1”,换句话说,也就是逢十进一。

因此也叫做十进制

而在计算机中,则使用二进制,也就是遇到2就往前进位。为什么要选用如此奇葩的进位方法呢?我们先看十进制,他需要0-9十个数字才能表示所有的数字。二进制呢,显然就只需要0和1两个数字就搞定了。这也正好和电路中高电平和低电平相对应。二进制怎么写呢:10(2)括号中的2表示这是2进制。如果你真的把前面的东西都看懂了,那么你就已经知道10(2)在十进制中是多少了。因为二进制逢二进1,所以在“十位”上的数字1代表1一个2,这说明10(2)在十进制中就是2。

此外还有八进制,逢八进1,因为8是2的3次方,所以一位8进制数正好就能表示3位2进制。

十六进制,遇到16就进1,你可能很好奇,大于9的数字是怎么表示,没错。就是用ABCDEF,A=10,B=11,…F=15。16是2的四次方,所以一位16进制可以表示4位2进制。因为2进制表示的数字实在太长了,所以16进制和8进制在编程的时候用的更多。16进制不仅可以用下标的方法表示(用于书写),也可以用0x+数字表示。0x就表示16进制,注意第一个字符是零。如5E可以写成0x5E这种写法是可以在编程中使用的。还有一种写法是在数字后面加一个字母h,比如5Eh,这种写法也仅用于书写。8进制在数字前加一个0,比如080。

进制转换

在明白了进制之后,我们就要开始学习进制之间的转换。

首先是其他进制和十进制之间的转换。

我们看一下十进制数的特点,十进制的12345可以表示为

1*10^4+2*10^3+3*10^2+4*10^1+5*10^0

其实每一位数所乘的十的幂,就是那一位的“位权”

同理,在8进制中有0457(前面的0表示这是一个八进制数)

0457 = 4*8^2+5*8^1+7*8^0=303

在这个等式中的数字均为10进制,我们把它相加,便将他转换成为了十进制,也就是303.

二进制中 1110 0010就是

1*2^7+1*2^6+1*2^5+0*2^4+0*2^3+0*2^2+1*2^1+0*2^0

没错,他就是226.

那么怎么把10进制变为其他进制呢,比如把59换成二进制。

我们可以这样写
59 ÷ 2 = 29 … 1
29 ÷ 2 = 14 … 1
14 ÷ 2 = 7 … 0
7 ÷ 2 = 3 … 1
3 ÷ 2 = 1 … 1
1 ÷ 2 = 0 … 1

最后别忘了把它倒过来,也就是111011

也可以用竖式运算

竖式计算

把除的数字换成其他的数字,比如16,就可以将十进制转换成任意进制。

你可以尝试着推导一下这种转换方式的原理,互联网上有很多说明,本文便不再重复

到这里你明白了进制究竟是什么东西了吗?如果还没有的话也不用着急,我们后面还有相关的叙述

最后补充一点,在计算机中,储存数据容量(或是大小)通常以“字节”(比特,byte简称B)为单位,他表示的是二进制。每一位二进制数字,称为“位(bit)”。1字节=8位,也就是8位二进制

显然,8位二进制所能表示的情况为2^8=256种,显然1B实在是太小,表示不了多少东西。因此常用的单位有KB,MB,GB,TB

  • 1KB=2^10B=1024B
  • 1MB=1024KB
  • 1GB=1024MB
  • 1TB=1024GB

最后修改于2014年11月8日

2 thoughts on “0.2、什么是“进制”

发表评论

电子邮件地址不会被公开。 必填项已用*标注