Я имею двоичное число 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);