2012-03-24 156 views
1

我有二進制數1010 1011.我知道這是十六進制的AB,我知道A = 10,B = 11十進制。但是,我如何從十進制的10和11到最終的171呢?將二進制轉換爲十六進制

六角我會做

   A   B 
0xAB = (10 * 16^1) + (11 * 16^0) = 171 

我可以做的十進制數類似,從10和11至171去?基本上,我只是尋找一種快速的方式來轉換任何二進制數字,而無需計算器。

+0

什麼電腦語言? – 2012-03-24 15:38:11

+0

我使用C來處理這些事情。 – 2012-03-24 15:41:18

+0

非常好,那麼您是否有代碼向我們展示您如何嘗試進行轉換? – 2012-03-24 16:10:04

回答

3

我不認爲還有比一個更簡單的方法一個× 16 + B.

0

取決於你正在嘗試做的,和你所使用的語言,你可以使用左移位操作並將這些值相加。

在C++:

unsigned short val_a = (0x1010 << 4); 
unsigned short val_b = 0x1011; 
unsigned short result = val_a + val_b; 

結果仍是一個無符號短整數。

0

在C語言中,你可以代替轉移如果乘法從A和B獲得AB:

int number = A << 4 + B; 

如果保存一個爲1010(十進制)和B爲1011,你可以轉換:

int bin2dec(unsigned int s){ 
    int v, p; 
    for (v = 0, p = 1; s > 0; s=s>>1) { v = v+p*(s%2); v++; p*=2;} 
    return v; 
} 

int number = bin2dec(A) << 4 + bin2dec(B); 
+0

準確地按照你的步驟,我得到'number = 2040;'或0x7f8。 – ryyker 2013-10-05 01:55:52