Главные идеи
Компьютеры хранят числа в двоичной системе, а люди читают их в восьмеричной или шестнадцатеричной. Перевод между системами, подсчёт нужного числа бит и чтение чисел со знаком используют весовые значения разрядов, являющиеся степенями основания.
- Каждая цифра имеет вес, равный степени основания. В двоичной системе веса справа равны 1, 2, 4, 8, 16 и так далее.
- Одна шестнадцатеричная цифра соответствует 4 битам, а одна восьмеричная — 3 битам, поэтому группировка бит переводит напрямую.
- Чтобы дать n элементам различные коды, нужно ⌈log₂ n⌉ бит. n бит вмещают 2ⁿ различных значений.
- В 8-битном дополнительном коде ведущая 1 означает отрицательное число. Значение равно беззнаковому минус 256.
Основные формулы
value = Σ dᵢ × bⁱbits needed = ⌈log₂ n⌉n bits hold 2ⁿ valuestwo’s complement: value = unsigned − 2ⁿ when the top bit is 1
Разобранный пример
Двоичное 101101 — это 32 + 8 + 4 + 1 = 45. Шестнадцатеричное 2F — это 2 × 16 + 15 = 47. Восьмеричное 157 — это 64 + 40 + 7 = 111. Чтобы дать различные коды 200 элементам, нужно 8 бит, потому что 2⁷ = 128 мало, а 2⁸ = 256 достаточно. 8-битный шаблон 11110110 без знака равен 246, поэтому в дополнительном коде это 246 − 256 = −10. В шаблоне 10110111 шесть единичных бит.
Частые ошибки
- Чтение двоичных разрядов слева вместо придания правой цифре веса 1.
- Округление числа бит вниз. Для 200 элементов нужно 8 бит, а не 7.
- Восприятие шаблона с ведущей 1 как положительного в дополнительном коде.
Практика
Проверьте себя на тренировочных вопросах по этой теме: Системы счисления и данные