Как пользоваться hex-калькулятором
- Введите два hex-числа, например
8ABиB78. Можно использовать знак минус и префиксы вроде0x. - Выберите операцию. Результат сразу обновляется в hex, десятичной и двоичной системах; при делении показывается и остаток.
- Для отрицательных результатов и NOT выберите разрядность (8, 16, 32 или 64 бита), чтобы увидеть значение в дополнительном коде.
Как складывать шестнадцатеричные числа
Складывайте цифры столбиком справа налево — точно так же, как в десятичной системе. Разница лишь одна: если сумма в разряде равна 16 или больше, запишите сумму минус 16 и перенесите 1 в следующий разряд. Пример: 8AB + B78.
| Разряд | Цифры | Сумма | Пишем | Перенос |
|---|---|---|---|---|
| 16⁰ | B + 8 | 11 + 8 = 19 | 3 | 1 |
| 16¹ | A + 7 + 1 | 10 + 7 + 1 = 18 | 2 | 1 |
| 16² | 8 + B + 1 | 8 + 11 + 1 = 20 | 4 | 1 |
| 16³ | перенос | 1 | 1 | – |
Если выписать полученные цифры от старшего разряда к младшему (снизу вверх), получится 1423. Проверка в десятичной системе: 2219 + 2936 = 5155 = 1423 в hex.
Вычитание в hex, отрицательные результаты и дополнительный код
Вычитание выполняется с заёмом: если верхняя цифра меньше, займите 16 из следующего разряда. B78 − 8AB: для 8 − B нужен заём, 8 + 16 − 11 = 13 = D; затем для 7 − 1 − A тоже нужен заём, 6 + 16 − 10 = 12 = C; наконец, B − 1 − 8 = 2, и результат равен 2CD.
Если второе число больше, результат отрицательный. Калькулятор показывает его со знаком минус (5 − 8 = −3), а также в виде битовой комбинации, которую хранит компьютер: в 8-битном дополнительном коде −3 — это 2⁸ − 3 = 253 = FD, в 16-битном — FFFD. Чтобы вручную сменить знак числа, инвертируйте все биты и прибавьте 1: 03 = 0000 0011 → 1111 1100 → 1111 1101 = FD.
Побитовые операции: AND, OR, XOR, NOT и сдвиги
Побитовые операции сравнивают числа бит за битом, поэтому программисты используют их для флагов, масок и прав доступа. Примеры для 3C = 0011 1100 и 0F = 0000 1111:
| Операция | Правило | Результат |
|---|---|---|
3C AND 0F | 1 только там, где оба бита равны 1 | 0C |
3C OR 0F | 1 там, где хотя бы один бит равен 1 | 3F |
3C XOR 0F | 1 там, где биты различаются | 33 |
NOT 3C (8 бит) | каждый бит инвертируется | C3 |
3C << 1 | сдвиг влево = умножение на 2 | 78 |
3C >> 2 | сдвиг вправо = деление на 4 | 0F |
Часто задаваемые вопросы
Как умножать шестнадцатеричные числа?
Так же, как в десятичной системе, но каждое промежуточное произведение записывается в шестнадцатеричной. Часто проще перевести числа в десятичную систему, перемножить и перевести обратно: 1A × 10 = 26 × 16 = 416 = 1A0. Умножение на 10 в hex (16) просто дописывает ноль — как умножение на 10 в десятичной системе.
Как работает деление hex-чисел?
Калькулятор выполняет целочисленное деление и показывает частное и остаток: 1423 ÷ 10 = 142, остаток 3. При делении на ноль выводится ошибка.
Почему NOT даёт разные результаты при разной разрядности?
NOT инвертирует каждый бит значения фиксированного размера, поэтому результат зависит от количества битов: NOT 3C — это C3 при 8 битах, но FFC3 при 16. Режим «Авто» выбирает наименьшую стандартную разрядность (8, 16, 32 или 64 бита), в которую помещается число.
Справится ли hex-калькулятор с большими числами?
Да. Все операции выполняются с целыми числами произвольной точности, поэтому 64-битные, 128-битные и ещё более длинные значения вычисляются точно — без переполнений и округлений, которыми грешат обычные калькуляторы.