16進製制加法 keil 第七課 進製4

2021-10-13 19:32:09 字數 3049 閱讀 6615

今天要帶大家了解一下進製運算的本質。只要了解了這個本質,理論上任何進製你都可以進行加、減、乘、除的運算。學會了這種方法,到後面學了c語言的時候你就可以用這種方法設定進製的加密演算法。扯遠了,希望本id能寫到c語言。

首先問大家乙個問題:大家為什麼知道1x1=1,2x2=4?

還沒想到?先放張圖。

看到這張乘法表,我們就應該知道,我們之所以能熟練地進行十進位制的運算,全憑我們腦中有兩張表,乙個是十進位制的加法表,另一張是十進位制的乘法表。想想我們小學的時候背了多久的乘法口訣,被罰抄了多少次乘法表。雖然我們可以進行任意十進位制的運算,但是絕大部分人都不會意識到其實我們只是記住了乙個加法表和乙個乘法表,其實最主要的是加法表,因為乘法表可以通過加法表得到。

其實任何進製的加、減、乘、除的運算的本質就是查表。

下面講解如何上圖中的數製作八進位制的加法表和乘法表。

製作加法表

方法:加法表是通過查表查出來的,乙個數加上多少,就從這個數開始向後數幾個,數到的那個數就是相加得到的結果。

下面舉幾個例子說明一下:

例1:八進位制2 + 4 = ?,過程如下圖。

講解:先從八進位製表中找到2,然後往後數4個,得到的數是6,所以八進位制的2 + 4 = 6。

例2:八進位制的2 + 7 = ?,過程如下圖:

講解:先從八進位制中找到2,然後往後數7位,得到11,所以八進位制的2 + 7 = 11。

根據這種查表的方法,可以填寫出如下的八進位制加法表:

製作乘法表

方法:可以結合加法表和八進位制資料表,查出八進位制的乘法表。

下面也舉兩個例子。

例1:2 x 5 = ?

講解:2 x 5可以看成是5 + 5,根據上面的加法表可以得到5 + 5 = 12,所以2 x 5 = 12。

例2:3 x 6 = ?

講解:3 x 6可以看成6 + 6 + 6,根據上面的加法表得到6 + 6 = 14,然後再計算14 + 6,這可以查八進位制資料表,14往後數6個,得到22,所以最終得到3 x 6 = 22。

使用這種方法就可以得到八進位制的乘法表。

進製的加法

任何進製的加法都可以使用查表方式查出來。從右向左一位一位的查。

舉乙個例子:276 + 333 = ?

第一步從最後一位向左算,先算6 + 3,查加法表得到是11,下面寫1,並記錄乙個進製。

然後往前算,7 + 3,查加法表得到是12,因為前面有乙個記錄的進製,所以要在八進位制數表中找到12,然後向後數乙個數,得到13,下面寫3,並記錄乙個進製。

再往前算,2 + 3,查加法表得到是5,因為前面也有乙個記錄的進製,所以要在八進位制數表中找到5,然後向後數乙個數,得到6,然後下面寫6。這樣就可以得到最後的結果是631 。

進製的減法

進製的減法和加法的方式是一樣的,只是換了思考方式,如a - b ,可以思考成什麼加b等於a。

舉個例子:71 - 25 = ?

先算1 - 5,我們可以理解成什麼加5等於1,或者等於的數最後一位是1的,可以找到4 + 5 = 11,所以1要向前面的7借一位。當然你也可以這樣考慮,1 - 5不夠減,向前面的7借一位,自己就成了11,然後找什麼加5等於11 ,也可以找到4 。

然後算7 - 2,因為之前7被借了1位,所以成了6 - 2,查加法表,什麼加2 等於6,找到2 + 4 = 6,所以下面寫4,得到最後的結果是44。

進製的乘法

進製的乘法也是通過查表來求得結果的。如果是多位相乘,先分別每位相乘,然後再相加。

舉個例子:234 * 54 = ?

先算4 * 4,在八進位制乘法表中查到,4 * 4 = 20 ,下面寫0,並記錄兩個進製。

然後算3 * 4,在八進位制乘法表中查到3 * 4 = 14,因為前面有兩個進製,所以還有在八進位制資料表中找到14,再向後找兩個數,得到16,所以下面寫6,並記錄乙個進製。

然後再算2 * 4,在八進位制乘法表中查到2 * 4 = 10,因為前面有乙個進製,所以還要在八進位制資料表中找到10,然後向後數一位,得到11,又因為前面沒有數,直接就在下面寫11 。

類似的方法查出234 * 5 的結果,注意數字的對應。得到如下式子。

然後把得到的兩個乘積相加,這就前面講過的進製的加法的問題了。最後相加得到15320 。

進製的除法

進製的除法也是通過查表求出來的,思維轉變一下就是進製的乘法。就不再舉例子了。

後言

其他進製的運算跟十進位制差不多,只是我們沒有意識到我們是通過查表得出的結果,通過前面對八進位制的舉例說明,發現很多跟十進位制有很多相似的地方。所以其他進製也是類似的,也包括自定義的進製數,用進製進行加密,對不懂進製的人來說就是一種極大的障礙。

寫於2020.3.1 23 :14

C語言第七課

主要內容 結構體 很重要,掌握 一 結構體的宣告 結構體是一種比較靈活的資料型別,與oc要學的類很相似 結構體是一種自己定義的資料型別示例 struct 結構體名 student 定義乙個學生型別 由結構體型別修飾的變數,叫結構體變數 定義 struct 結構體名 變數名 示例 struct stu...

第七課 C變數

第七課c變數 7.1 c 變數介紹 變數是程式可操作的儲存區的名稱。c 中每個變數都有特定的型別,型別決定了變數儲存的大小和布局,該範圍內的值都可以儲存在記憶體中,運算子可應用於變數上。變數的名稱可以由字母 數字和下劃線字元組成。它必須以字母或下劃線開頭。大寫字母和小寫字母是不同的,因為c 是大小寫...

python第七課(集合)

set 集合是乙個無序不重複元素的集合 無序唯一 支援 union 聯合 intersection 交 difference 差 和 sysmmetric difference 對稱差集 等數 算 建立語法 set1 set 空 set1 set1 set 字典將取key key 唯一 set1 s...