十進位制轉化為十六進位制怎麼算十六進位制轉換成十進位制的具體演算法?

2021-03-05 09:19:23 字數 6114 閱讀 1203

1樓:深圳俊竹科技****

十進位制轉化為十六進位制計算方式,簡單說就是整數除以16取餘,直到商為0為止,然後從最後一個餘數讀到第一個

十六進位制轉化為十進位制計算方式,按權、相加即得十進位制數。

2樓:肥仙女

十進位制轉化為十六進位制**:

#include "stdio.h" int main();printf("請輸入一個十進位制數:");

scanf("%d",&num); while(num>0)  printf("轉化為十六進位制的數為:0x"); for(i=i-1;i>=0;i--)//倒序輸出  printf("\n");

}程式執行結果:

擴充套件資料:進位制轉換由一組數碼符號和兩個基本因素「基數」與「位權」構成。基數是指,進位計數制中所採用的數碼(數制中用來表示「量」的符號)的個數。

位權是指,進位制中每一固定位置對應的單位值。

舉例:二進位制數轉換為十進位制數

二進位制數第0位的權值是2的0次方,第1位的權值是2的1次方……所以,設有一個二進位制數:0110 0100,轉換為10進製為:

下面是豎式:

0110 0100 換算成十進位制

第0位 0 * 20 = 0

第1位 0 * 21 = 0

第2位 1 * 22 = 4

第3位 0 * 23 = 0

第4位 0 * 24 = 0

第5位 1 * 25 = 32

第6位 1 * 26 = 64

第7位 0 * 27 = 0

公式:第n位2(n)

---------------------------100用橫式計算為:

0 * 20 + 0 * 21 + 1 * 22 + 0 * 23 + 0 * 24 + 1 * 25 + 1* 26 + 0 * 27 = 100

0乘以多少都是0,所以我們也可以直接跳過值為0的位:

1 * 22 + 1 * 25 +1*26 = 100

3樓:匿名使用者

整數部分,就是指小數點前的位數,除以16取餘數,然後把所得數寫成得數+餘數;

小數點後的部分,要乘以16,依次寫出來就可以了例(91.875)這是十進位制的數轉換成十六進位制的就是(5b.e)91/16得5餘11就可以寫成5b

0.875*16得14就是e

4樓:匿名使用者

就是讓十進位制數除以16取餘,直到商為0為止,然後從最後一個餘數讀到第一個數(逆序),讀出來的十進位制數比如12就對應16進位制的c

5樓:匿名使用者

用十進位制的數除以 16,得出一個商和一個餘數,如果商大於 15,繼續用商除以 16,迴圈操作,一直除到商小於等於 15,再用商和餘數連起來,所得的數就是十六進位制的整數了。

6樓:匿名使用者

十進位制轉二進位制(整數及小數部分):

1、把該十進位制數,用二因式分解,取餘。

以235為例,轉為二進位制

235除以2得117,餘1

117除以2得58,餘1

58除以2得29,餘0

29除以2得14,餘1

14除以2得7,餘0

7除以2得3,餘1

3除以2得1,餘1

從得到的1開始寫起,餘數倒排,加在它後面,就可得11101011。

2、把十進位制中的小數部份,轉為二進位制。

把該小數不斷乘2,取整,直至沒有小數為止,注意不是所有小數都能轉為二進位制!

以0.75為例,

0.75剩以2得1.50,取整數1

0.50剩以2得1,取整數1,順序取數就可得0.11。

1、二進位制數、八進位制數、十六進位制數轉十進位制數

有一個公式:二進位制數、八進位制數、十六進位制數的各位數字分別乖以各自的基數的(n-1)次方,其和相加之和便是相應的十進位制數。個位,n=1;十位,n=2...舉例:

110b=1*2的2次方+1*2的1次方+0*2的0次方=0+4+2+0=6d

110q=1*8的2次方+1*8的1次方+0*8的0次方=64+8+0=72d

110h=1*16的2次方+1*16的1次方+0*16的0次方=256+16+0=272d

2、十進位制數轉二進位制數、八進位制數、十六進位制數

方法是相同的,即整數部分用除基取餘的演算法,小數部分用乘基取整的方法,然後將整數與小數部分拼接成一個數作為轉換的最後結果。

例:見四級指導16頁。

3、二進位制數轉換成其它資料型別

3-1二進位制轉八進位制:

從小數點位置開始,整數部分向左,小數部分向右,每三位二進位制為一組用一位八進位制的數字來表示,不足三位的用0補足,

就是一個相應八進位制數的表示。

010110.001100b=26.14q

八進位制轉二進位制反之則可。

3-2二進位制轉十進位制:

見1 3-3二進位制轉十六進位制:

從小數點位置開始,整數部分向左,小數部分向右,每四位二進位制為一組用一位十六進位制的數字來表示,

不足四位的用0補足,就是一個相應十六進位制數的表示。

00100110.00010100b=26.14h

十進位制轉各進位制

要將十進位制轉為各進位制的方式,只需除以各進位制的權值,取得其餘數,第一次的餘數當個位數,第二次餘數當十位數,其餘依此類推,直到被除數小於權值,最後的被除數當最高位數。

一、十進位制轉二進位制

如:55轉為二進位制

2|55

27――1 個位

13――1 第二位

6――1 第三位

3――0 第四位

1――1 第五位

最後被除數1為第七位,即得110111

二、十進位制轉八進位制

如:5621轉為八進位制

8|5621

702 ―― 5 第一位(個位)

87 ―― 6 第二位

10 ―― 7 第三位

1 ―― 2 第四位

最後得八進位制數:12765

三、十進位制數十六進位制

如:76521轉為十六進位制

16|76521

4782 ――9 第一位(個位)

298 ――14 即 e 第二位

18 ――10 即 a 第三位

1 ―― 2 第四位

最後得12ae9

二進位制與十六進位制的關係

2進位制 0000 0001 0010 0011 0100 0101 0110 0111

16進位制 0 1 2 3 4 5 6 7

2進位制 1000 1001 1010 1011 1100 1101 1110 1111

16進位制 8 9 a(10) b(11) c(12) d(13) e(14) f(15)

可以用四位數的二進位制數來代表一個16進位制,如3a16 轉為二進位制為:

3為0011,a 為1010,合併起來為00111010。可以將最左邊的0去掉得1110102

右要將二進位制轉為16進位制,只需將二進位制的位數由右向左每四位一個單位分隔,將各單位對照出16進位制的值即可。

二進位制與八進位制間的關係

二進位制 000 001 010 011 100 101 110 111

八進位制 0 1 2 3 4 5 6 7

二進位制與八進位制的關係類似於二進位制與十六進位制的關係,以八進位制的各數為0到7,以三位二進位制數來表示。如要將51028 轉為二進位制,5為101,1為001,0為000,2為010,將這些數的二進位制合併後為1010010000102,即是二進位制的值。

若要將二進位制轉為八進位制,將二進位制的位數由右向左每三位一個單位分隔,將事單位對照出八進位制的值即可。

十六進位制轉換成十進位制的具體演算法?

7樓:sa_sa_陳

十六進位制轉換成十進位制的具體演算法是:

1、首先明白16進位制數(從右到左數是第0位,第1位,第2位……)的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方,依次這樣排列下去。

2、明白abcdef表示的二進位制數字分別是10,11,12,13,14,15。

3、十六進位制轉換成十進位制的公式是:要從右到左用二進位制的每個數去乘以16的相應次方,然後這些數字相加就是了。

例1:2af5換算成10進位制:

第0位: 5 * 16^0 = 5

第1位: f * 16^1 =15*16^1= 240

第2位: a * 16^2= 10* 16^2=2560

第3位: 2 * 16^3 = 8192

結果就是:5 * 16^0 + 15 * 16^1 + 10 * 16^2 + 2 * 16^3 = 10997

例2:ce換算成10進位制:

第0位:e*16^0=14*16^0=14

第1位:c*16^1=12*16^1=192

結果就是:14*16^0+12*16^1=206

16進位制即逢16進1,每一位上可以是從小到大為0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f共16個大小不同的數。16進位制轉換即16進位制與其他不同進位制之間的換算轉換。

8樓:匿名使用者

(一)十六進位制化為十進位制方法:

用個位數+十位數*16+百位數*256+千位數*4096+...相乘的時候,前面的一位數乘以的數是十後面一位數乘以數的16倍.

具體案例如下:

(ab)=a×16+b=(171)

(abc)=a×256+b×16+c=(2748)(二)十進位制化為十六進位制的方法

把十進位制轉十六進位制按照除16取餘,直到商為0為止。(具體用法如下圖)

9樓:匿名使用者

16進位制到十進位制的轉換方法:

16進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方……

所以,在第n(n從0開始)位上,如果是是數 x (x 大於等於0,並且x小於等於 15,即:f)表示的大小為 x * 16的n次方。

例:2af5換算成10進位制:

用豎式計算:

第0位:5 * 16^0 = 5

第1位:f * 16^1 = 240

第2位:a * 16^2= 2560

第3位:2 * 16^3 = 8192

-------------------------------------

10997

直接計算就是:

5 * 16^0 + f * 16^1 + a * 16^2 + 2 * 16^3 = 10997

10樓:玩玩貓兒

十六進位制是逢十六進一,轉換成十進位制要逢十進一的

11樓:

^十六進位制

轉十進位制:

從個位起第i位乘以16的i-1次方

比如0x233 = 2*16^2 + 3*16^1 + 3*16^0 = 512 + 48 + 3 = 563

0x666 = 6*16^2 + 6*16^1 + 6*16^0 = 1536 + 96 + 6 = 1638

0x7fff = 7*16^3+15*16^2+15*16^1+15*16^0=28672+3840+240+15=32767

十進位制轉十六進位制:

除十六取餘數

比如233 ÷ 16 = 14 ......914 ÷ 16 = 0 ......14

倒著寫就是0xe9

32768 ÷ 16 = 2048 ......02048 ÷ 16 = 128......0128 ÷ 16 = 8......0

8 ÷ 16 = 0......8

倒著寫就是0x8000

演算法實現:

十六進位制轉十進位制:

#include

#include

char buf[20];

int len,_pow,ans=0;

int trans(char hex)

int main()

printf("%d\n",ans);

return 0;

}十進位制轉十六進位制:

#include

char trans(int deci)

int n,len=0;

char hex[20];

int main()

for (int i=len-1;i>=0;i--)putchar(hex[i]);//跟手算一樣,要倒著輸出return 0;}

十六進位制轉十進位制怎麼算,十六進位制轉換成十進位制的具體演算法?

16進位制轉10進位制 1000 1x16x16x16 16的3次方 0x16x16 16的2次方 0x16 16的1次方 0x1 16的0次方 4096 16進位制轉2進位制 用8421碼代進去就是了 如 8421 1000 8 1010 8 2 10 a 0101 4 1 5 付費內容限時免費檢...

八進位制,十進位制,十六進位制化為二進位制

書上的短除方法想必你已經會了,介紹給你一種快方法 以十進位制轉二進位制為例 回 比如十進位制是22,又根答據二進位制的位權得到 16 8 4 2 1是可以拼湊成22的數 因為它們都比22小 那好,用22 16 6,所以二進位制先消耗掉一個16 在第5位上 剩下的是6,根據位權可以得到 可以組成6的是...

十進位制數和十六進位制數怎麼轉換,十進位制 數字 和十六進位制 字母表示的 如何轉換

16進位制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方 所以,在第n n從0開始 位上,如果是是數 x x 大於等於0,並且x小於等於 15,即 f 表示的大小為 x 16的n次方。進位制轉換表 例 2af5換算成10進位制 用豎式計算 第0位 5 16 0...