今天要介绍的东西,是在编写程序的时候,可能需要具备的一个知识,但是好像不知道也不会影响那麽大(对於如果未来不是写系统或是後端的工程师),但是因为这东西从小提到大,却好像没有深入了解,因此对於数学不太熟练的我就努力的学习了一番。我也不会写到太难的东西(毕竟我自己也不会哈哈)。
对於我们一般台湾人的生活,最常接触到的就是十进位制还有六十进位制!但是什麽是进位制?
请问是因为台湾前阵子水很缺乏,需要禁止卫浴吗,禁卫制?
还是因为疫情严峻,需要禁位,禁位制?
都不是。
首先我们来了解一下进位。
通常我们在小学开始,就会被教导 1 + 1 = 2 、1 + 2 = 3、1 + 3 = 4 ……当1 加到9的时候就会进位,这个进位方式,就是所谓的十进位制。
接下来另一个常见的进位制是时钟,当秒针转到 60 秒的时候,分针就会转动1 / 60 圈,也就是一分钟;而当分针转动60圈的时候,时针也会转动1 /60圈,也就是一个小时,这样的进位制称作六十进位制。
所以其实,日常生活中会用到很多有关数学的东西,他们也没有想像中的那麽可怕。
接下来要介绍的是二进位,一些略懂电脑的人们可能知道,在电脑的语言中是由0与1所组成的,但可能不太知道这些0 与 1 是怎麽运作的。
首先,拿十进位来举例,就是每当数字加到10的时候就会进位;同理来说,在二进位里面,每当数字加到2的时候就会进位。
例如1
再加 1
就会变成 10
再加 1
就会变成 11
,如果这个时候再加 1
就会再进位变成 100
【二进位中的 1 - 32】
二进位 | 十进位 | 二进位 | 十进位 |
---|---|---|---|
000 001 | 1 | 010 001 | 17 |
000 010 | 2 | 010 010 | 18 |
000 011 | 3 | 010 011 | 19 |
000 100 | 4 | 010 100 | 20 |
000 101 | 5 | 010 101 | 21 |
000 110 | 6 | 010 110 | 22 |
000 111 | 7 | 010 111 | 23 |
001 000 | 8 | 011 000 | 24 |
001 001 | 9 | 011 001 | 25 |
001 010 | 10 | 011 010 | 26 |
001 011 | 11 | 011 011 | 27 |
001 100 | 12 | 011 100 | 28 |
001 101 | 13 | 011 101 | 29 |
001 110 | 14 | 011 110 | 30 |
001 111 | 15 | 011 111 | 31 |
010 000 | 16 | 100 000 | 32 |
从上面可以看到,我以六个数字为一组来表示,当十进位是0
时,二进位是 000 000
,但是十进位到4
的时候,二进位就会从000 011
进位到 000 100
,之後也以此类推。其实有个更好的判断方式,就是从右边数来第n
个数字当作2
的(n-1)
次方,就拿19
来举例。
我们可以把19
拆解成1 x 16 + 1 x 2 + 1 x 1
就等於是1 x 2^4 + 1 x 2^1 + 1 x 2^0
,如果回到二进位的那一串数字来看:
【19的二进位与二的次方对照表】
6 | 5 | 4 | 3 | 2 | 1 |
---|---|---|---|---|---|
0 | 1 | 0 | 0 | 1 | 1 |
2^5 | 2^4 | 2^3 | 2^2 | 2^1 | 2^0 |
=32 | =16 | =8 | =4 | =2 | =1 |
这样的方式也可以对应到任何的以 R
为底的近位制,像是4进位、8进位、16进位,或7进位、23进位都是可以的。
你知道为什麽时间上要用60 进位来计算吗? ~~每日头条~~
(A) 因为60很酷
(B) 因为60等分比较好切
(C) 因为60不多也不少 刚刚好
答案其实都对!
如果把60做因式分解:1、2、3、4、5、6、10、12、15、20、30、60,代表,60这个数字可以拆解成很多种组合,也就是1个小时,可以拆解成1个60分、2个30分、4个15分、5个12分、6个10分、10个6分、12个5分、15个4分、30个2分、60个1分;但若是用50做因式分解:1、2、5、10、25、50,等於1个小时顶多只能拆解成1个50分钟、2个25分、5个10分、10个5分、25个2分、50个1分。相对来说如果以50分为一小时,可以拆解的方式更少,但在日常生活中,时间很长被拆解成不同长度,像是10分(1/6小时)、15分(1/4小时)、20分(1/3小时),但是如果今天是用50分为一个小时,你的1/4小时可能会叫作12.5分钟,1/3小时会被叫作16.6666666分钟。
另外,由於在制作时钟的时候,因为从前难以准确分出6或是12以外的切法。在一个圆中,最好切的方式就是将它像切 pizza 一样切成6等份,然後再从每份的中间切下去就会得到12份。
这次先简单的介绍一下进位制是如何运作的,而里面比较重要的当然就是二进位了! 在下一篇会介绍一下二进位的进阶版,4进位、8进位;还有16进位。
<<: 找LeetCode上简单的题目来撑过30天啦(DAY3)
>>: [Day03] Vue i18n - Message Format Syntax
Implement audio wave generator using the Mbed API ...
一、为何要做标准化 以最简单的方式来说,一份资料中,不可能每个特徵的范围都是一样的,当我们需要拿两笔...
来轻松聊聊 终於来到基础CSS的最後一篇,这次要分享的是CSS的变量。 想像一个情境,你正在负责一个...
前言 每个软件的开始画面,或多或少会有些好用但总是被我们忽略的功能,等我们使用一段时间後才从别人那边...
结语和 Azure 的学习资源- 打完魔王之後的最终章通常是剧情动画 从朋友开口问我 Azure 的...