16進位制轉換演算法問題,2 8 10 16進位制轉換演算法問題!?

2021-04-22 15:37:50 字數 5421 閱讀 4822

1樓:匿名使用者

二進位制整數部分

89%2 = 1

44%2 = 0

22%2 = 0

11%2 = 1

5%2 = 1

2%2 = 0

1%2 = 1

所以整數部分為:1011001

小數部分

0.5*2 = 1

所以小數部分為:1

所以二進位制表示為:1011001.1

下面轉換成8進位制就很方便了,只要對照2-8進製表,從低位開始一次拿出三位,對照轉成8進位制就行了,如果是小數就要從左往右,不足添0

比如上面的就是

001 011 001.100

1 3 1 4 所以八進位制為131.4十六進位制也差不多,只是把三位變成四位。

0101 1001 . 1000

5 9 8 = 59.8如果要寫在作業上,求二進位制的格式要對照書上。

2樓:匿名使用者

89.5是10進位制的數,轉換2進位制

89/2 商 44 餘 1

44/2 商 22 餘 0

22/2 商 11 餘 0

11/2 商 5 餘 1

5/2 商 2 餘 1

2/2 商 1 餘 0

1/2 商 0 餘 1

所以89轉換2進位制=1011001,

0.5/0.5 商 1 餘 0

所以0.5轉換2進位制=0.1

所以 89.5轉換2進位制1011001.18進位制89/8 11 1

11/8 1 3

1/8 0 1

所以89轉換8進位制131

0.5/0.125 4 0

0.5 轉換8進位制 0.4

所以89.5轉換8進位制131.4

89 轉換16進位制

89/16 5 9

5/16 0 5

89轉換16=59

0.5/(1/16)=0.8

所以89.5轉換16進位制=59.8

3樓:匿名使用者

十進位制轉二進位制:

用2輾轉相除至結果為1

將餘數和最後的1從下向上倒序寫 就是結果

例如302

302/2 = 151 餘0

151/2 = 75 餘1

75/2 = 37 餘1

37/2 = 18 餘1

18/2 = 9 餘0

9/2 = 4 餘1

4/2 = 2 餘0

2/2 = 1 餘0

故二進位制為100101110

二進位制轉十進位制

從最後一位開始算,依次列為第0、1、2...位第n位的數(0或1)乘以2的n次方

得到的結果相加就是答案

例如:01101011.轉十進位制:

第0位:1乘2的0次方=1

1乘2的1次方=2

0乘2的2次方=0

1乘2的3次方=8

0乘2的4次方=0

1乘2的5次方=32

1乘2的6次方=64

0乘2的7次方=0

然後:1+2+0

+8+0+32+64+0=107.

二進位制01101011=十進位制107

4樓:匿名使用者

數制的概念

數制是人們利用符號進行計數的科學方法。數制有很多種,在計算機中常用的數制有:十進位制,二進位制和十六進位制。

數制也稱計數制,是指用一組固定的符號和統一的規則來表示數值的方法。計算機是資訊處理的工具,任何資訊必須轉換成二進位制形式資料後才能由計算機進行處理,儲存和傳輸。

十進位制數

人們通常使用的是十進位制。它的特點有兩個:有0,1,2….9十個基本數字組成,十進位制數運算是按「逢十進一」的規則進行的.

在計算機中,除了十進位制數外,經常使用的數制還有二進位制數和十六進位制數.在運算中它們分別遵循的是逢二進一和逢十六進一的法則.

二進位制數

二進位制數有兩個特點:它由兩個基本數字0,1組成,二進位制數運算規律是逢二進一。

為區別於其它進位制數,二進位制數的書寫通常在數的右下方註上基數2,或加後面加b表示。

例如:二進位制數10110011可以寫成(10110011)2,或寫成10110011b,對於十進位制數可以不加註.計算機中的資料均採用二進位制數表示,這是因為二進位制數具有以下特點:

1) 二進位制數中只有兩個字元0和1,表示具有兩個不同穩定狀態的元器件。例如,電路中有,無電流,有電流用1表示,無電流用0表示。類似的還比如電路中電壓的高,低,電晶體的導通和截止等。

2) 二進位制數運算簡單,大大簡化了計算中運算部件的結構。

二進位制數的加法和乘法運算如下:

0+0=0 0+1=1+0=1 1+1=10

0×0=0 0×1=1×0=0 1×1=1

八進位制(octal)

由於二進位制資料的基r較小,所以二進位制資料的書寫和閱讀不方便,為此,在小型機中引入了八進位制。八進位制的基r=8=2^3,有數碼0、1、2、3、4、5、6、7,並且每個數碼正好對應三位二進位制數,所以八進位制能很好地反映二進位制。 例如:

二進位制資料 ( 11 101 010 . 010 110 1 )2 對應 八進位制資料 ( 3 5 2 . 2 6 4 )8

十六進位制數

由於二進位制數在使用中位數太長,不容易記憶,所以又提出了十六進位制數

十六進位制數有兩個基本特點:它由十六個字元0~9以及a,b,c,d,e,f組成(它們分別表示十進位制數0~15),十六進位制數運算規律是逢十六進一,即基r=16=2^4,通常在表示時用尾部標誌h或下標16以示區別。

例如:十六進位制數4ac8可寫成(4ac8)16,或寫成4ac8h。

數的位權概念

對於形式化的進製表示,我們可以從0開始,對數字的各個數位進行編號,即個位起往左依次為編號0,1,2,……;對稱的,從小數點後的數位則是-1,-2,……

進行進位制轉換時,我們不妨設源進位制**換前所用進位制)的基為r1,目標進位制**換後所用進位制)的基為r2,原數值的表示按數位為ana(n-1)……a2a1a0.a-1a-2……,r1在r2中的表示為r,則有(ana(n-1)……a2a1a0.a-1a-2……)r1=(an*r^n+a(n-1)*r^(n-1)+……+a2*r^2+a1*r^1+a0*r^0+a-1*r^(-1)+a-2*r^(-2))r2

(由於此處不可選擇字型,說明如下:an,a2,a-1等符號中,n,2,-1等均應改為下標,而上標的冪次均用^作為字首)

舉例:一個十進位制數110,其中百位上的1表示1個10^2,既100,十位的1表示1個10^1,即10,個位的0表示0個100,即0。

一個二進位制數110,其中高位的1表示1個2^2,即4,低位的1表示1個2^1,即2,最低位的0表示0個2^0,即0。

一個十六進位制數110,其中高位的1表示1個16^2,即256,低位的1表示1個16^1,即16,最低位的0表示0個16^0,即0。

可見,在數制中,各位數字所表示值的大小不僅與該數字本身的大小有關,還與該數字所在的位置有關,我們稱這關係為數的位權。

十進位制數的位權是以10為底的冪,二進位制數的位權是以2為底的冪,十六進位制數的位權是以16為底的冪。數位由高向低,以降冪的方式排列。

進數制之間的轉換

1.二進位制數、十六進位制數轉換為十進位制數(按權求和)

二進位制數、十六進位制數轉換為十進位制數的規律是相同的。把二進位制數(或十六進位制數)按位權形式多項式和的形式,求其最後的和,就是其對應的十進位制數——簡稱「按權求和」.

例如:把(1001.01)2轉換為十進位制數。

解:(1001.01)2

=1*8+4*0+2*0+1*1+0*(1/2)+1*(1/4)

=8+0+0+1+0+0.25

=9.25

把(38a.11)16轉換為十進位制數

解:(38a.11)16

=3×162+8×16+10×160+1×16-1+1×16-2

=768+128+10+0.0625+0.0039

=906.0664

2.十進位制數轉換為二進位制數,十六進位制數(除2/16取餘法)

整數轉換.一個十進位制整數轉換為二進位制整數通常採用除二取餘法,即用2連續除十進位制數,直到商為0,逆序排列餘數即可得到――簡稱除二取餘法.

例:將25轉換為二進位制數

解:25÷2=12 餘數1

12÷2=6 餘數0

6÷2=3 餘數0

3÷2=1 餘數1

1÷2=0 餘數1

所以25=(11001)2

同理,把十進位制數轉換為十六進位制數時,將基數2轉換成16就可以了.

例:將25轉換為十六進位制數

解:25÷16=1 餘數9

1÷16=0 餘數1

所以25=(19)16

3.二進位制數與十六進位制數之間的轉換

由於4位二進位制數恰好有16個組合狀態,即1位十六進位制數與4位二進位制數是一一對應的.所以,十六進位制數與二進位制數的轉換是十分簡單的.

(1)十六進位制數轉換成二進位制數,只要將每一位十六進位制數用對應的4位二進位制數替代即可――簡稱位分四位.

例:將(4af8b)16轉換為二進位制數.

解: 4 a f 8 b

0100 1010 1111 1000 1011

所以(4af8b)16=(1001010111110001011)2

(2)二進位制數轉換為十六進位制數,分別向左,向右每四位一組,依次寫出每組4位二進位制數所對應的十六進位制數――簡稱四位合一位.

例:將二進位制數(111010110)2轉換為十六進位制數.

解: 0001 1101 0110

1 d 6

所以(111010110)2=1d6h

轉換時注意最後一組不足4位時必須加0補齊4位

數制轉換的一般化

1)r進位制轉換成十進位制

任意r進位制資料按權、相加即可得十進位制資料。 例如:n = 1101.

0101b = 1*23+1*22+0*21+1*20+0*2-1+1*2-2+0*2-3+1*2-4 = 8+4+0+1+0+0.25+0+0.0625 = 13.

3125

n = 5a.8 h = 5*161+a*160+8*16-1 = 80+10+0.5 = 90.5

2)十進位制轉換r 進位制

十進位制數轉換成r 進位制數,須將整數部分和小數部分分別轉換.

1.整數轉換----除r 取餘法 規則:(1)用r 去除給出的十進位制數的整數部分,取其餘數作為轉換後的r 進位制資料的整數部分最低位數字; (2)再用2去除所得的商,取其餘數作為轉換後的r 進位制資料的高一位數字; (3)重複執行(2)操作,一直到商為0結束。

例如: 115 轉換成 binary資料和hexadecimal資料 (圖2-4) 所以 115 = 1110011 b = 73 h

2.小數轉換——乘r 取整法 規則:(1)用r 去除給出的十進位制數的小數部分,取乘積的整數部分作為轉換後r 進位制小數點後第一位數字; (2)再用r 去乘上一步乘積的小數部分,然後取新乘積的整數部分作為轉換後r 進位制小數的低一位數字; (3)重複(2)操作,一直到乘積為0,或已得到要求精度數位為止。

c中數值轉換和16進位制運算問題

你是不是對convert.toint16 函式理解錯了,int aa convert.toint16 a,16 是將字串a按16進位制的方式轉換成10進位制,故aa為76,bb同理。所以 中的結果確實是按10進位制運算的。需要追究c 是如何進行16進位制計算的嗎,在計算機中只有二進位制運算,只不過表...

16進位制38怎麼表示,38轉換成16進位制是多少

10進位制38 16進位制26 16進位制38 10進位制56 0x26 38轉換成16進位制是多少 轉化成n進位制就要將十進位制數連續除n取餘 38除16商2餘6 再將商2除16得到商0餘2 在將餘數從後往前寫得到26 你學c語言的吧,這麼簡單的都要問。哎,貌似有人已經給答案了 進位制符號 二進位...

C中,有16進位制轉換為Unicode16進位制,再轉為

和編碼有關的,如utf 8的話,char 按高8位 低8位,分別賦值 c 字串與16進位制字串之間的轉換 20 staticintstr to hex char string,unsignedchar cbuf,intlen return0 函式名稱 hex to str 函式功能 十六進位制 轉字...