前言
最近长智齿,特别疼,有天凌晨的时候疼醒,搞得早上差点迟到。今天稍微好点,吃完饭写写东西,整理之前写的。
进入这课,估计都是有电脑,而且会用电脑,会打字的。
这一课只是些概念。
编程语言的课程怎么会从进制讲起?因为本id有时候喜欢追求事物的本质。电脑中的一切都是数字(确切地说都是1和0),不信?你装个UE(可以看这篇安装教程安装《UltraEdit下载和安装的图文教程》),随便拖一个exe程序到UE中打开,随便找一张图片,在UE中打开,看看是不是一堆数字。其实计算机中所有东西都是数字,只是这些数字按照不同的规则组织,就成了不同的东西,例如:图片有jpg、png、bmp等等格式,其实本质就是里面的数字组织不同而已。
进制,听起来好像是小学就应该会的东西,但其实也没那么简单。我们追求的是能了解进制的本质。
一、进制
1、为什么会有数字?
数字就是给我们带来方便的,大家想象一下,如果我们的生活中没有数字,那有多不方便呀。
2、我们为什么要学习进制?
我们一个程序员,有必要去学进制吗?相信大家都觉得学这个一点用都没有。但是我想说的是:学东西,不能太功利了,而且在自己没学会之前,千万不要说学这个学那个没什么用。我们没到那个层次就不要轻易下定论。想当年我学三角函数的时候,就觉得学那些一点用都没有,但是现在编程的时候才发现,那些还是挺有用的。
学习进制,就是因为,计算机就是一堆数字,对计算机来说,一切都是数字,想了解计算机、深入的学习它,首先就要了解进制的本质。
3、进制的定义
请看下面三个进制的定义:
十进制的定义:由十个符号组成,分别是0 1 2 3 4 5 6 7 8 9 逢十进一。
九进制的定义:由九个符号组成,分别是0 1 2 3 4 5 6 7 8 逢九进一。
十六进制的定义:由十六个符号组成,分别是0 1 2 3 4 5 6 7 8 9 A B C D E F逢十六进一。
看看我标红的几个字,“符号组成”,“分别是”。
类似的,我们可以给任意进制定义。例如:
八进制的定义:由八个符号组成,分别是0 1 2 3 4 5 6 7 逢八进一。
七进制的定义:由七个符号组成,分别是0 1 2 3 4 5 6 逢七进一。
六进制的定义:由六个符号组成,分别是0 1 2 3 4 5 逢六进一。
4、你了解进制的本质吗?
大家看看上面对进制的定义,特别是标红的几个字,大家有什么想法?
其实进制的本质是:多少进制,就是由多少个符号组成,这些符号是什么可以自己定义的。
那好,那我们就可以这么定义十进制:由十个符号组成,分别是9 1 8 3 7 5 4 0 2 6 逢十进一。
这样的十进制定义,完全没问题。
为了让大家更加了解进制的本质,我们再狠一点,刚不是说那几个符号是可以自己定义的吗,那我们把它换成图片,也是可以的,例如我们把十进制定义成以下的图片。
我们把图一定义为1,图二定义为2,图三定义为3,以此类推。用十个图片表示十进制中的十个符号,完全是可以的。
大家又会质问:把十进制搞成那么复杂,有什么用?我只想说在我们没有达到一定的水平不要轻易地说一样东西没有用。例如把这些十进制定义地乱七八糟的,就可以用来做加密,我们把十进制定义成上面的那样,就会给解密的人带来极大的困难。对一个不了解进制本质的人来说,他会以为这是多么高深的算法。
5、计算机与数字的关系。
我们来说说计算机和数字之间的关系。
(1)如上面所说,在计算机的世界里,什么都是数字,比如一张图片、一部视频或者一首歌曲,最终都是以二进制的形式进行存储的。
(2)计算机为什么要采用二进制来进行存储?
1)二进制就足够表示所有的东西了。
2)受硬件的制约。如果把计算机做成十进制,那硬件是相当复杂的,学过《计算机组成原理》的都知道。
(3)由于二进制书写复杂,所以在很多软件中,都将计算机中的数据用16进制来进行表示。16进制是二进制的简写形式。
(4)1个十六进制数 = 4个二进制数
原因:4个二进制数能表示的范围是:0000~1111 也就是 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 刚好和一个十六进制数能表示的范围是一样的。
6、记住二进制与十六进制的映射
这个最好记住,对我们后面学习汇编很有帮助的,记住了,在我们就可以很方便地使用。
写于2020.1.14 22:43