进制是什么?

进制是学习计算机语言最基本的知识,所以一定要掌握。其实它很简单,我们日常生活中有很多进制的例子,例如:
  • 一分钟六十秒,逢六十进一,就是六十进制;
  • 一天二十四小时,逢二十四进一,就是二十四进制;
  • 一星期七天,逢七进一,就是七进制;
  • 一年十二个月,逢十二进一,就是十二进制;
  • 小学数学是逢十进一,就是十进制;
  • 而计算机中的数据只有 0 和 1,逢二进一,就是二进制。

所以进制就是逢几进一,r 进制就是逢 r 进一。计算机只能识别二进制,人类最习惯使用的是十进制,而为了实际需要,又建立了八进制和十六进制。八进制就是逢八进一,十六进制就是逢十六进一。

C语言中规定了八进制数前面要加0(注意是数字零而不是字母 o),十六进制数前面要加0x0X,而十进制前面什么都不加。这是为什么呢?

比如 5,到底是十进制、八进制还是十六进制?什么都不加就默认是十进制。如果希望 5 是八进制,那么前面就加上 0;如果希望 5 是十六进制,那么前面就加上 0x 或 0X。

十进制为逢十进一,它只有 0、1、2、3、4、5、6、7、8、9 这十个基数。逢十进一的意思就是:9 再加 1 就变为 10,即向十位进了一位,原来个位回归 0。

二进制为逢二进一,它只有 0 和 1 两个基数。逢二进一的意思就是:
  • 1 再加 1 就变成 10,即向前进了一位,原来的 1 变成 0;
  • 再加 1 就是 11;
  • 再加 1 又逢二,再往前进一位,进一位后第二个 1 又逢二再进位,就是 100 了;
  • 再加 1 变成 101,再加 1 变成 110,再加 1 变成 111,再加 1 变成 1000……

二进制和十进制有一个对应的关系
十进制 0 1 2 3 4 5 6 7 8
二进制 0 1 10 11 100 101 110 111 1000

那么十进制的 5 和二进制的 101 代表的是不是同一个数字?答案是“是”,它们本质上是同一个数字。

无论是十进制、二进制、八进制还是十六进制,都只是计数的一种方式,只不过它们用的是不同的进制,所以表现形式不一样,但本质上都是同一个数字。理解了上面内容,后面很多知识就很容易理解了。

八进制就是逢八进一,它只有 0、1、2、3、4、5、6、7 这八个基数。

由上可以总结出,r 进制有 r 个基数,而且基数里面最大的是 r–1,因为基数都是从 0 开始的。比如五进制中,基数最大的是 4,基数分别为 0、1、2、3、4。

十六进制肯定有十六个基数。它的基数除了十进制的 0~9 之外,还有字母 A~F,总共加起来是十六个。注意,字母不区分大小写。十六进制是逢十六进一,F 是十五,加 1 就变成十六了,逢十六就进一,即 0x10。

下面是常用进制对照表,大家可以看一下。
十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

人类为什么最习惯用十进制

人类为什么最习惯用逢十进一的十进制?对于世界上大部分的国家,即便之前因为交通不发达,他们彼此之间并不知道在世界的某一个角落还有另一个民族的存在,但是他们使用的都是十进制!这是为什么?

原因很简单,就是因为我们都有十个手指!进制的起源是用于记数的,人类刚开始都是用手指计数的。即使是现在的小朋友算数也还是喜欢用手指,所以人类最习惯用十进制。

计算机为什么用的是二进制

那么为什么计算机使用的是二进制呢?

因为二进制从硬件上比较容易实现。任何事物最少也有两种不同的状态,所以区分成两种状态比较容易。但是要将一个硬件硬生生地区分成十种不同的状态,这个就太难、太复杂了。

小结

进制是学习计算机必须要掌握的内容,也是一个重点。
  • 掌握进制的概念,区分八进制数、十进制数和十六进制数的表示方法。注意八进制数是以0开头,十六进制数是以0x0X开头,以及了解其原因。
  • 掌握进制只是数字的不同表现形式,它们本质上表示的是同一个数。
  • 了解为什么人类习惯使用十进制而计算机使用的却是二进制。