16進製制陣列轉成10進製 qt 第五課 進製2

2021-10-13 21:35:11 字數 2760 閱讀 8609

前言

感謝網友的提醒,前面一課弄錯了,是第四課,這一課才是第五課。這一課主要講傳統進製的轉換方法。但是需要說明的是,進製間是不需要轉換的,每一種進製本身都是完美的。

一、通過中間進進行轉換

需要說明的是,任何進製間都是可以進行相互轉換的,但是不常用的一些轉起來就比較麻煩,當然,方便一點的方法就是以十進位制為中間點進製轉換,例如:把八進位制轉成二進位制,可以先把八進位制轉成十進位制,然後把得到的十進位制轉成二進位制。這種方法簡單,但是步驟比較多。

根據上面所說的,可以知道學會任何進製跟十進位制的轉換,就可以進行任何進製的轉換了。

下面是任何進製跟十進位制的轉換方法:1、十進位制轉成其他進製:整數部分的轉換:要轉成幾進製,就除幾,最後倒取餘數;小數部分的轉換:要轉成幾進製,就乘幾,最後順取整。2、其他進製轉成十進位制:直接把資料按權展開,然後相加。

十進位制轉成其他進製

整數的十進位制轉二進位制

方法:除2倒取餘

例子:135 d = 10000111 b

解釋:如下圖,將135除以2,得到67,寫在下面,餘數為1,寫在右側。得到的67還可以被2除,所以再將67除以2,得到33,寫在下面,餘數為1,寫在右側。以此類推,直到得到的商為0為止。最後將得到的餘數從下往上取。

小數部分的十進位制轉二進位制

方法:乘2順取整

例子:0.125 d = 0.001 b

解釋:如下圖,將0.125乘以2,得到0.25,把乘積的整數部分寫到右側,然後把乘積0.25的小數部分(注意,一定是小數部分,如果前面的乘積結果整數部分不是0,要把整數部分去掉)繼續乘以2,得到0.5,把乘積的整數部分寫到右側,然後把乘積0.5的小數部分繼續乘以2,得到1,沒有小數部分,結束轉換。最後把得到的整數部分從上到下取,就可以得到相應的二進位制的小數部分。

整數的十進位制轉八進位制

方法:除8倒取餘

例子:150 d = 226 o

解釋:如下圖,將150除以8,得到18,寫在下面,餘數為6,寫在右側;商不為0,繼續求解,知道商為0才結束。最後把得到的餘數從下往上取。得到八進位制的226。

其他進製轉成十進位制

整數的二進位制轉十進位制

​方法:將二進位制資料按權展開,然後相加。

例子:10010110 b = 150 d

解釋:如下圖,將10010110按權展開,從右邊算起,第一位是2的0次方,第二位是2的1次方,依次指數遞增。最後相加,得到的結果就是十進位制數。

小數部分的二進位制轉十進位制

方法:將二進位制數按權展開(注意權值,小數點後面第一位是2的-1次方,不是0次方),然後相加。

例子:0.1011 b = 0.6875 d

解釋:如下圖,將0.1011按權展開,小數點後面第一位是2的-1次方,第二位是2的-2次方,依此類推。最後把各部分相加,就可得到相應的十進數。

其他進製就不一一講了,因為很簡單,只要將冪的底數換成相應的進製數就可以了,例如八進位制就換成8,十六進製制就換成16。

二、不通過中間進進行轉換

下面說一些不通過中間進製就直接轉換的方法。

二進位制轉八進位制

方法:每3位二進位制數按權展開,然後相加得到一位八進位制數。說明:3位二進位制數對應一位八進位制數(注意:取3位時是從右向左取,如果最左側的二進位制數不夠3位,在前面補0)

例子:10010110 b = 226 o

解釋:如下圖,先將10010110按3位來分,從右向左分,如果最左邊不夠3位,前面補零。我們分成了010,010,110這3個,然後這3個數按權展開,然後相加,得到3個八進位制數字,最後把這3個數拼接成乙個八進位制數。

八進位制轉二進位制

方法:對每乙個八進位制數字對應3個二進位制數字。所以對每乙個八進位制數字除以2倒取餘數,倒取餘數不夠3位的,在前面補0,最後把他們拼接,就得到相應的二進位制數。

例子:226 o = 10010110 b

解釋:如下圖,將每個八進位制位都除以2取餘數,直到商為0,才倒取餘數,得到該八進位制位所對應的二進位制數,如果二進位制數不夠3位,就在前面補0。全部八進位制位都求出對應的二進位制數後,拼接起來,得到最後的二進位制數。

其他的就不說了,例如:二進位制和十六進製制之間的轉換就不說了,原理是差不多的,只是乙個十六進製制位對應4個二進位制位而已。

後言

其實這種傳統的進製間的轉換是沒什麼必要的,但是我們有時候考試的時候會遇到,所以講講。

寫於2020.2.17 22:21

2進製 10進製 16進製制

1.介紹 2進製 用兩個阿拉伯數字表示,0 1 10進製 用十個阿拉伯數字表示,0到9 0 1 2 3 4 5 6 7 8 9 16進製制 0到9 0 1 2 3 4 5 6 7 8 9 a到f a,b,c,d,e,f 16進製制說明 這五個字母來分別表示10,11,12,13,14,15 字母不區...

16進製制轉10

請設計程式實現如下功能 從鍵盤輸入乙個不超過8位的正的十六進製制數字串,將它轉換為正的十進位制數後輸出。注 十六進製制數中的10 15分別用大寫的英文本母a b c d e f表示。樣例輸入 ffff 樣例輸出 65535 include include include using namespac...

Qt 將字串轉成16進製制顯示

最近專案用到了需要將字串轉換成16進製制顯示。這玩意折騰了一上午。首先,資料塊內容 struct userdata char flag 1 0x30 char x position 1 0x30 char y position 0x30 char sum head 0 head 1 head 2 f...