五分鐘教會你任何進製之間的互相轉換

2021-08-09 20:59:37 字數 2372 閱讀 4303

進製也就是進製,是人們規定的一種進製方法。 對於任何一種進製—x進製,就表示某一位置上的數運算時是逢x進一位。 十進位制是逢十進一,十六進製制是逢十六進一,二進位制就是逢二進一,以此類推,x進製就是逢x進製。

二進位制

八進位制十進位制

十六進製制

轉換關係

這麼多進製之間的轉換,看完以後就再也不打算學了!其實根本沒有那麼複雜,上面的轉換關係可以精簡成如下關係:

十轉x

整數部分,對x短除取餘倒序

小數部分,與x相乘取整正序

x轉十
按權展開求和

什麼是權?
例如十進位制數 111,三個「1」放在不同的位置,所代表的意義也不同。從左到右分別為 100,10,1。還可以表示為:1×

102,1×

101,1×

100。

這裡面10

x 就叫做權,二進位制則為2x

,八進位制為8x

,以此類推。

ok,現在是不是簡單了。到這裡可能有人會有疑問了,你只說了十進位制和其他進製之間的轉換,那其他進製之間的轉換呢?別著急往下看:

我們以二進位制和十六進製制的轉換為例,首先大家看一下上面那個對應關係表,很容易就會發現乙個規律——四位二進位制數剛剛對應一位十六進製制數所表示的範圍(二進位制的0000-1111對應十六進製制的0-f)。ok知道這個規律以後,一切都變得明了了。那麼將9f(h)轉成二進位制就可以分別將9和f轉成四位二進位制數,然後組合起來就好了,如下圖:

那麼9f(h)轉成二進位制數就是10011111,二進位制轉十六進製制就是先講二進位制數四位一組的規則分好組,然後轉成對應的十進位制數(超過十的用a-f表示)。八進位制和二進位制的轉換也是這個規律,只不過對應關係變成了三位二進位制數對應一位八進位制數而已。

ps:八進位制和十六進製制之間不能直接轉換,八進位制需要先轉成二進位制或十進位制,在有對應的二進位制或十進位制轉成十六進製制,反過來也一樣。

十進位制轉其他進製的短除法我覺得還是有點麻煩,有沒有更簡單的方法呢?當然有啦,哈哈哈!其實方法很簡單,就三個字——找節點。

節點表二進位制的權

二進位制數

十進位制2

0 112

1 1022

2 10042

3 100082

4 10000162

5 100000322

6 1000000642

7 10000000

1282

8 100000000

2562

9 1000000000

512210

10000000000

1024

這個表有什麼用呢?比如我們要將578轉成二進位制,我們不用短除法,我們看看上面表中與578最相近的數是多少?很容易就找到512,它是 29

對應的二進位制數是1000000000(乙個1後面九個0,2的n次方對應的二進位制數是1後面n個0),578-512=66;再去表中找和66最相近的數,很容易找到了64,它是26

,對應的二進位制數是100000,66-64=2;2對應的二進位制是10。這樣很容易就計算出578對應的二進位制數為1001000010。

十轉八和十轉十六同理,不再贅述了。

通過上面的分析,我們知道只要掌握了十進位制和任何一種進製之間的轉換,那麼我們就掌握了所有進製之間的互相轉換了。而且我們還知道下面的規則:

十轉x

整數部分,對x短除取餘倒序

小數部分,與x相乘取整正序

還可以通過找節點的方式進一步簡化

x轉十
按權展開求和

十分鐘教會你使用CCS定位Html的元素

首先,先介紹一下,大概的格式為 這裡我稱作引數,可能叫法不準確,大概這個意思 標籤名 屬性名 引數 這些都是在定位元素時都會有的,當然這些都是標準引數,有兩個比較特殊的屬性是id和class,這兩個屬性可以分別使用英文符號 和.代替.比如定位乙個有id,name,class name屬性的這些元素的...

五分鐘搞懂內網和外網之間的通訊的原理

cpp軟體架構獅 2018 09 25 15 01 33 對於初學者而已,我們學習的網路程式設計 如tcp,udp程式設計 我們通常都是在區域網內進行通訊測試,有時候我們或者會想,我們現在寫的內網網路資料和外網的網路資料有什麼不同,我們內網的資料是如何走出外網的呢?首先,我們需要了解一下什麼是公有 ...

五分鐘搞懂內網和外網之間的通訊的原理

寫的通熟易懂,特轉過來備忘!原創鏈結找不到了 對於初學者而已,我們學習的網路程式設計 如tcp,udp程式設計 我們通常都是在區域網內進行通訊測試,有時候我們或者會想,我們現在寫的內網網路資料和外網的網路資料有什麼不同,我們內網的資料是如何走出外網的呢?公有 ip 和私有 ip 的區別 首先,我們需...