Преобразование двоичного кода в шестнадцатеричное до десятичного

Я имею двоичное число 1010 1011. Я знаю, что это AB в гексагоне, и я знаю, что A = 10 и B = 11 в десятичной системе. Но как я могу получить от 10 и 11 десятичных чисел до конечного числа 171?

С гексагоном я бы сделал

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

Могу ли я сделать что-то подобное с десятичными числами, чтобы перейти от 10 и 11 до 171? В принципе, я просто ищу быстрый способ преобразования любого двоичного числа без калькулятора.

Я не думаю, что есть намного проще, чем A × 16 + B.

В зависимости от того, что вы пытаетесь сделать, и языка, который вы используете, вы можете использовать оператор shift-left и добавить значения вместе.

В C ++:

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

В результате по-прежнему остается беззнаковый короткий int.

В C вы можете вместо этого перейти, если умножение получить AB от A и B:

 int number = A << 4 + B; 

если вы храните A как 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);