进制一:进制的一些概念和进制的本质

本贴最后更新于 2200 天前,其中的信息可能已经水流花落

前言

今天我们从进制开始讲,听起来好像是小学就应该会的东西,但其实也没那么简单。我们最求的是能了解进制的本质。

为什么会有数字

数字就是给我们带来方便的,大家想象一下,如果我们的生活中没有数字,那有多不方便呀。

为什么要学进制

我们一个程序员,有必要去学进制吗?相信大家都觉得学这个一点用都没有。但是我想说的是:学东西,不能太功利了,而且在自己没学会之前,千万不要说学这个学那个没什么用。我们没到那个层次就不要轻易下定论。想当年我学三角函数的时候,就觉得学那些一点用都没有,但是现在编程的时候才发现,那些还是挺有用的。
学习进制,就是因为,计算机就是一堆数字,对计算机来说,一切都是数字,想了解计算机、深入的学习它,首先就要了解进制的本质。

进制的定义

请看下面三个进制的定义:
十进制的定义:由十个符号组成,分别是 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 逢六进一。

您了解进制的本质吗?

大家看看上面对进制的定义,特别是加粗的几个字,大家有什么想法?
大家想想:那些符号有没有规定一定要使用那几个呀,我们可以换成其他的吗?答案当然是可以。
那好,那我们就可以这么定义十进制:由十个符号组成,分别是 9 1 8 3 7 5 4 0 2 6 逢十进一。
这样的十进制定义,完全没问题。
为了让大家更加了解进制的本质,我们再狠一点,刚不是说那几个符号不固定吗,那我们把它换成图片,也是可以的,例如我们把十进制定义成以下的图片。
firstpng
nextpng
我们把图一定义为一,图二定义为二,图三定义为三,以此类推。

大家又会质问:把十进制搞成那么复杂,有什么用?麻烦死了。我只想说在我们没有达到一定的水平不要轻易地说一样东西没有用。例如把这些十进制定义得乱七八糟的,就可以用来做加密,我们把十进制定义成上面的那样,就会给解密的人带来极大的困难。对一个不了解进制本质的人来说,他会以为这是多么高深的算法。

计算机与数学的关系

我们来说说计算机和数字之间的关系。

  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 刚好和一个十六进制数能表示的范围是一样的。
  5. 记住二进制与十六进制的映射。记住他们之间的映射关系,方便以后的学习。
    binaryAndHpng
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1063 引用 • 3454 回帖 • 189 关注
  • 进制
    3 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...