進製的本質

2022-07-26 06:33:17 字數 2937 閱讀 7975

什麼是進製,進製的本質又是什麼,為什麼在計算的時候都會把十進位製作為中間轉換,其實這樣的思維完全是錯誤的,進製的本質並不是我們熟悉的十進位制。

進製的本質就是查表,與各種的轉換沒有任何關係,並不是說計算八進位制,就把它轉為十進位制計算後再轉回八進位制,這種思想本來就是錯誤的,進製的本質就是寫表和查表,我們之所以對十進位制的特別熟悉,就是因為我們把十進位制相關的表記住了,並不是因為十進位制就是進製的基礎。

這裡用三進製的形式來表示是為了方便說明問題,在正常的三進製中有三個元素0、1、2,它們所表示出來的數是這個樣子的。

其中的每乙個數是怎麼寫出來的,其實都是根據最前面的0、1、2三個數查出來的,後面的所有數都是由前面的數查出來的。

首先先寫出0、1、2,再往後的話就需要進製,一位已經滿足不了我們現在的需求了,所以需要兩位來進行表示,如何從一位表示跨度到兩位表示,這裡提供乙個方法:在一位的0、1、2前面補乙個0,在兩位看來,一位的表示其實就是第一位為0,這樣寫出來的時候,會比較方便觀察和理解。

看圖,當前數字為02,需要往後走一位,按照前面0、1、2的順序來看,接下來,2應該往後走一位,但是後面沒有數字了,就需要返回開始的數字重新來一遍,此時應該把這一輪結束的標誌記錄到前面,也就是我們所說的進製,所以0應該變為1,2應該變為0,所以接下來的數字應該為10。

接下來,繼續往後加一,也就是再往後挪乙個,0往後走一步就變成了1,所以接下來是11,再往後是12。

接下來又到了所謂進製的時候,2往後走一步,發現又需要重新回到開頭,開始新的一輪,所以2變成了0,而前面記錄的又需要再加乙個,1往後走一步,就變成了2,所以接下來的數就變成了20。

再往後就依次類推,最後就得到了文章開頭所得到的三進製的**。

在有了前面的這個基礎之後,我們開始製作三進製的加法法則和乘法法則。

因為三進製所涉及到的數字比較少,所以對於加法法則來說也是比較少的。

1+1=也就是在1的基礎上,往後數乙個數,參照第一張表,1往後數一數是2,所以1+1=2;然後看1+2=依照前面的思路,從1往後數兩個數,便是10,所以1+2=10;同理2+2=也就是在2的基礎上往後數兩位,便是11,所以2+2=11

加法法則就是往後數個數,那同理乘法法則就是往後數成倍的個數。

由於三進製的基數太小,其中的乘法應用體現不出來,與加法法則的效果是一樣的

由於三進製的範圍太小,在七進製運算的時候詳細說

開始選擇三進製是為了後面對進製進行變化的時候方便,結果體現不出來加法法則和乘法法則的實際使用效果了,這裡就使用七進製來展示一下具體的使用方法,它們的操作是一樣的。

首先,先寫出一堆七進製的數,仔細觀察還是能發現一些規律的,但是一定要按照數個數的思維去找規律。

接下來是加法法則和乘法法則

依照前面數數的方式來從表裡面找就可以了,這裡用4+5=來舉例,按照前面的方法,就是從4開始往後數5個數,便為12,其他的都是同樣的方法。

乘法就是多次的加法,這裡用2*3=來舉例,2*3轉換成加法就是兩個3相加,也就是從3往後數3個數,便為6,所以2*3=6,其他的方法類似。

進製的加減乘除運算依靠前面寫出來的兩個加發表和乘法表就可以滿足了,一切依舊是查表,記住進製的本質就是查表。

加:23456+54356=

我們從最後乙個位看,(這裡一直都是說的第幾位,因為個位十位等都是十進位制才有的,其他進製並沒有這麼個叫法),是兩個6相加,查表得15,所以最後一位結果為5,1向前進製;再看倒數第二位,兩個5相加,查表的13,加上剛剛進製的1,通過查表可知結果為14,所以倒數第二位結果為4,1向前進製;4和3相加,查表得10,進製得11,結果為1,1向前進製;3和4相加,查表得10,進製得11,結果為1,1向前進製;2和5相加,查表得10,進製得11;所以最終結果為111145

減:5621-654=

看最後一位,1減4減不過,借位得11,11減4,查表可知4+4=11,所以最後一位結果為4;2被借位為1,1減5減不過,借位得11,11減5查表得3;6被借位為5,5減6減不過,借位得15,15減6查表得6;5被借位為4,所以最終結果為4634

乘:234*65=

看最後一位,4乘5,查表得26,結果為6,2進製;3乘5,查表得21,進製得23,結果為3,2進製;2乘5,查表得13,進製得15,所以第乙個數得結果為1536;然後算到處第二位,同樣的方法得2103;最後1536加21030,(乘法計算的最後兩數相加是錯位的,所以這裡寫成了21030)得22566

除法也是同樣的方法。

前面已經把正常情況下的進製轉換和運算說清楚了,但為什麼前面一直說它們是正常的,因為那些符合我們平常的運算概念,但是誰又規定三進製必須是0、1、2,我要是選!、@、#作為三進製的基本元素可以不?可以,那我使用2、0、1作為基本元素可以不?一點問題也沒有,那我能不能使用三個來作為基本元素?也是沒有問題的;而且在這樣的情況下,還有乙個好處,不知道你的進製規範的是看不懂其中具體的內容的,這也就是通過自定義進製元素的方式實現了所謂的進製加密

那我們就按照2、0、1作為基本元素來寫一下這個情況下的三進製表示。

最後我們換一種方式來表示,再來感受一下進製

進製的本質就是查表,進製的本質就是掰手指頭數數。

進製的本質

問題描述 有乙個黑匣子,黑匣子裡有乙個關於 x 的多項式 p x 我們不知道它有多少項,但已知所有的係數都是正整數。每一次,你可以給黑匣子輸入乙個整數,黑匣子將返回把這個整數代入多項式後的值。那麼,最少需要多少次,我們可以得到這個多項式每項的係數呢?答案 2 解析 首先帶入1,得到p 1 記為s,然...

本質啊本質之四 陣列的本質

陣列 1.陣列是同型別的聚合 2.定義乙個陣列,如 type x n 意思是記憶體裡有 n個連續的 type 型變數,連續的排列在一起。x 是第乙個元素的位址,是乙個立即數,是右值,不是變數。x x 0 這是編譯器處理的,因為當你將 x 賦值給乙個指標時 編譯器實際上就用的 x 0 3.多維陣列也是...

c 二進位制相容本質

總的一條就是讓client只依賴 名字 而不依賴任何 實現 實現 具體的就是2類 1 函式體,code 2 任何記憶體塊大小,layout細節 為什麼會有二進位制相容問題,就是因為一般的c 標頭檔案並不是單純的介面宣告,其中也還包括了 實現細節 因為成員變數就是一種記憶體layout,就屬於實現細節...