tft每日頭條

 > 圖文

 > 進制數講解

進制數講解

圖文 更新时间:2024-12-03 10:24:21

在電子通信領域,會用到很多二進制和“模2”運算。什麼是“模”?與“進制”有什麼不同?為什麼需要使用模運算?

進制數講解(通俗理解進制與)1

1、什麼是進制?


“進制”就是數數(數一下有幾本書)和計算時的一種“進位制度”系統。這個系統是人為制定的。

我們日常生活中使用的是“十進制”,電子通信領域大量使用“二進制”。

一種“進制”需要有一些規則,這些規則綜合構成“進位制度”系統:

① 從0遞增,每次遞增都按照加1計算;(這是四則運算的前提)

② 可以遞增到無限大;

③ 遞增過程中,數字的位數随着“進制”增加;(構成一個數字的位,叫做權)

④ 數字隻有一位的時候,這些數字被稱作“進制”的基數;

⑤ 每種進制都有自己獨有的“按進制”計算規則,也就是“進位”規則。

這5條規則是構成一種計數系統的前提。通常,最引人關注的規則就是“進位”規則。其他規則較少被注意到。但是,實際上,這5條規則中的任何一種規則被改變,都能産生一種新的計數系統。

如果僅有“進位”規則發生變化,其他規則不變,就會産生很多種“進制”,比如二進制、3進制、7進制甚至371進制。一般用到的是二進制。

可以認為:所有的其他“進制”都是十進制演變出來的,計數習慣和運算習慣都沿用十進制。

進制數講解(通俗理解進制與)2

常見的十進制和二進制計算

上圖的計算方法衆所周知。但是如果跟“模運算”相比較的話,會發現很大不同。

2、什麼是“模”?“模”和“進制”有什麼不同?


如果說十進制是一個計數世界的話,二進制是另一個規則類似的子計數世界。構成兩者的5條規則中,隻有具體的基數和逢基進位是不同的,其他都相同。如果将第②條規則“可以遞增到無限大”,改變成“僅可以遞增到某個有限大的值”就産生了另一種計數世界,這就是“模”。

“模”,是一個比較“令人感到陌生”的名詞,但是在生活中卻很早就普遍使用了。如鐘表的表盤。時間的長度是無限的,如果想把無限的時間長度數值放進表盤有限的刻度上,有一個簡單的辦法,就是讓表示時間長度的數值不停地歸0。

進制數講解(通俗理解進制與)3

進制數講解(通俗理解進制與)4

這個表盤數字世界就是“模12”。數字從0開始加1遞增,遞增到12,不進位而是歸零。這與進制的處理方法截然相反。也是“模”與“進制”的最突出的區别。

從0到11的數字是十進制數字,可以稱為“模元”,而數字12可以稱為“模值”。(如果有相關的著作對這些名詞有更加合适的稱謂,請自行轉換。)

模元可以是十進制數字,也可以是二進制或者其他進制數字。

模元之間的遞增方式也可以不是按照加1遞增。如果是這樣的話,按模運算會與常規的運算不同。

至此,關于“模”的概念應該有一個大緻的總結:

① “模”是一種數學計數系統,或者說一種計數模型;

② 模值可以按照自己的需要自由指定;

③ 模元可以是任何進制數字,遞增方式可以不是加1遞增;

④ 模内,數字遞增到模值,不會進位,而是歸零,重新遞增。

用語言來描述的話,“模”就是一個封閉的圓形計數系統。

模與進制的區别是:

模,滿則歸零;

進制,滿則溢出。

如何把任何一個數字放進已經定義好的模中呢?

把十進制數字215放在模12内:

進制數講解(通俗理解進制與)5

就說215在模12内等于11。這個方法可以是定義模的辦法。但是這樣建立的模有兩個前提條件:從0開始計數,每次按照加1遞增。

如果模元不是從0開始,模元不按照遞增排序,或者按照加某個數值遞增,除模取餘方法可能需要做一些改變。這種情況出現在某些編碼中。

3、模運算原理


先看模12運算。

進制數講解(通俗理解進制與)6

在模12中,

5 4=9;

5-8=9。

可以說,4和8是互補的。這也是二進制中“補數”的含義。

7乘以8,可以理解為從0點開始,指針順時針走8次,每次走7格,最後指針指向數字8點。所以模12的7×8=8。

按模除法一般用于把任意數字放入定義好的模中,實際的用途類似于鐘表的用途。

最簡單的是“模2”。用一個表盤來描述模運算。

進制數講解(通俗理解進制與)7

模2加:

0 1=1;指針從0點順時針走1格,指向1點。

1 0=1;指針從1點順時針走0格,指向1點。

0 0=0;

1 1=0;指針從1點順時針走1格,指向0點。

由此定義了一種邏輯運算:異或。異或的運算符号為

進制數講解(通俗理解進制與)8

,比較形象,意味着在一個圓圈内進行的加法運算。

模2加法的特點可以描述為:

不同得1,相同得0。在編碼中大量應用。

模2減:

0-1=1;指針從0點逆時針走1格,指向1點。

1-0=1;指針從1點逆時針走0格,指向1點。

0-0=0;

1-1=0;指針從1點逆時針走1格,指向0點。

可以看出,模2減和模2加,結果完全一樣。所以在計算模運算的除法時,常常用加法直接代替減法。編碼中我們隻能看到模2加,看不到模2減,就是這個原因。

模2乘:

0×0=0;指針從0點順時針走0次0格,指向0點。

0×1=0;指針從0點順時針走1次0格,指向0點。

1×0=0;指針從0點順時針走0次1格,指向0點。

1×1=1。指針從0點順時針走1次1格,指向1點。

這就是邏輯“與”運算。和十進制的乘法思路一樣。

模2除:

0÷1=0;

1÷1=1。

可以看出,以2為模,其實模元并不是二進制,而是在十進制基礎上定義的一種模。隻不過模2比較特殊。

一種比較特殊的按模除法,在二進制基礎上定義的模。如二進制數字1100100除以1011定義的一種二進制模,模值為1011。應該稱之為“模1011”。如果把1100100放進這個模内,對應的模元就是除法的餘數:

進制數講解(通俗理解進制與)9

可以看出,二進制的按模計算不同于十進制的按模計算。二進制的按模計算過程中,對每一位使用“模2運算”。那麼為什麼要使用“模2運算”呢?

前面說了,模是一種為了實現某種目的人為定義的計數系統,按模計算方法也是人為定義的。在編碼的過程中,可以不使用模2加法進行按模計算,但是如果統一使用模2加法能夠讓按模運算具有某些特殊性質,還能夠大幅度降低硬件或軟件的難度,為什麼不用呢?

偉大的科學家發現了按模運算的一種特殊性質:

如果一個二進制數字T(x)以xn 1為模,每次T(x)按照乘2遞增,則模xn 1内的模元是一組循環碼組。

xn 1是一種二進制數的多項式表示法。表示二進制數字有n 1位,最高位和最低位都是1,其他位都是0。

這條性質能夠用來建立CRC編碼。如以10001為模值,建立一個模。用10011做被除數進行模運算:

進制數講解(通俗理解進制與)10

進制數講解(通俗理解進制與)11

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved