Другие названия: двоичная система · шестнадцатеричная система · перевод чисел
Бесплатные задачи по теме Системы счисления с рисунками, подсказками и подробными решениями. Каждый раз новые значения, трёх уровней: из двоичной и шестнадцатеричной в десятичную, дополнительный код, биты, диапазоны и память.
Бесплатная задачаЛёгкая
Установите биты так, чтобы 8-битный регистр содержал 0x99. Чему равно значение комбинации N в десятичной системе?
0x99
Нажмите на бит, чтобы переключить его между 0 и 1. В поле показана ваша комбинация как число без знака, и её также можно ввести. Точный ответ: целое число, без округления.
В повседневной жизни вы считаете в десятичной системе с основанием 10. В ней десять цифр, от 0 до 9, и каждый разряд стоит в десять раз больше разряда справа от него.
В числе 352 цифра 3 означает 300, цифра 5 означает 50, а цифра 2 означает 2. Разряды справа налево стоят 1, 10, 100.
352 = 3 · 100 + 5 · 10 + 2 · 1
Компьютер хранит всё в виде переключателей, которые включены или выключены. Поэтому он считает в двоичной системе, с основанием 2, и только с цифрами 0 и 1.
Одна двоичная цифра — это бит. Группа из 8 бит — это байт.
Правило одинаково в любой системе счисления: каждая цифра равна своему значению, умноженному на степень основания.
Самопроверка Сколько означает цифра 7 в десятичном числе 4721?
7000
700
70
7
Ответ: 700. Справа налево разряды стоят 1, 10, 100 и 1000. Цифра 7 стоит в третьем разряде, поэтому она означает 7 · 100 = 700.
2Двоичная и шестнадцатеричная системы
В двоичной системе разряды справа налево стоят 1, 2, 4, 8, 16 и так далее. Каждый разряд стоит вдвое больше разряда справа от него.
Для 8-битного числа разряды стоят 128, 64, 32, 16, 8, 4, 2 и 1.
Чтобы прочитать двоичное число, сложите веса всех разрядов, в которых стоит 1. Для 0011 0010 это 32 + 16 + 2 = 50.
Длинные ряды битов трудно читать. Программисты часто записывают их в шестнадцатеричной системе (hex) с основанием 16.
Для шестнадцатеричной системы нужно 16 цифр. Используются 0–9, а затем буквы A = 10, B = 11, C = 12, D = 13, E = 14 и F = 15.
Шестнадцатеричные разряды справа налево стоят 1, 16, 256 и 4096. Шестнадцатеричное число часто записывают с 0x впереди, например 0x2F.
Одна шестнадцатеричная цифра — это ровно 4 бита, поэтому 0011 0010 — это 0x32: 0011 — это 3, а 0010 — это 2.
Самопроверка Чему равно 0x1A в десятичной системе?
110
11
161
26
Ответ: 26. A = 10. Разряды равны 16 и 1, поэтому 1 · 16 + 10 · 1 = 26. Запись цифр рядом (110) или их сложение (11) игнорирует веса разрядов. 161 использует разряды в неправильном порядке.
3Отрицательные числа: дополнительный код
Байт, в котором все разряды положительны, хранит числа от 0 до 255. Это называется беззнаковым представлением.
Для хранения отрицательных чисел компьютеры используют дополнительный код (two’s complement). Единственное изменение: крайний левый бит стоит −128 вместо +128.
Так 1000 0011 — это −128 + 2 + 1 = −125. Крайний левый бит называется знаковым: когда он равен 1, число отрицательное.
8-битное число в дополнительном коде лежит в диапазоне от −128 (1000 0000) до +127 (0111 1111).
Чтобы записать отрицательное число −x, начните с +x в двоичной системе, инвертируйте каждый бит (0 становится 1, 1 становится 0) и прибавьте 1.
Пример для −5: 5 — это 0000 0101. После инверсии получается 1111 1010. Прибавив 1, получаем 1111 1011.
Тот же набор битов, прочитанный как беззнаковый, имеет значение 256 − x. Для −5 это 251, и 1111 1011 действительно равно 128 + 64 + 32 + 16 + 8 + 2 + 1 = 251.
Самопроверка 8-битная комбинация 1111 1111 хранит число в дополнительном коде. Каково её значение?
255
−127
−128
−1
Ответ: −1. −128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = −1. 255 — это беззнаковое прочтение. −127 получается, если считать первый бит знаком минус перед 111 1111.
4Метод по шагам
Из двоичной или шестнадцатеричной в десятичную:
Запишите вес разряда под каждой цифрой: степени 2 для двоичной системы, степени 16 для шестнадцатеричной, начиная с 1 справа.
В шестнадцатеричной системе замените каждую букву её значением: от A = 10 до F = 15.
Умножьте каждую цифру на вес её разряда и сложите всё.
Дополнительный код:
Чтобы прочитать комбинацию, припишите крайнему левому биту значение −128 (в 8 битах) и сложите веса всех разрядов с единицами.
Чтобы записать −x, запишите +x в 8 битах, инвертируйте каждый бит и прибавьте 1.
Беззнаковое значение этой комбинации равно 256 − x. Используйте его, чтобы проверить свои биты.
Биты, диапазоны и память:
n бит дают 2ⁿ различных комбинаций.
Беззнаковые они хранят от 0 до 2ⁿ − 1. В дополнительном коде они хранят от −2ⁿ⁻¹ до 2ⁿ⁻¹ − 1.
Чтобы дать k объектам собственные коды, найдите наименьшее b, при котором 2b ≥ k.
Для памяти умножьте число элементов на число бит на элемент, затем разделите на 8 для байтов и на 1024 для KiB.
M = ширина × высота × бит на пиксель / 8 / 1024 (KiB)
5Разобранный пример
Пройдите каждый шаг. Попробуйте предсказать следующий, прежде чем открыть его.
Разобранный пример
8-битная комбинация 1011 0110 хранит знаковое целое в дополнительном коде. Каково её значение N в десятичной системе?
1
Запишите веса разрядов
В дополнительном коде крайний левый разряд стоит −128. Остальные разряды: 64, 32, 16, 8, 4, 2 и 1.
2
Посмотрите на знаковый бит
Крайний левый бит равен 1, значит, число отрицательное.
3
Сложите разряды с единицами
Единицы стоят в разрядах −128, 32, 16, 4 и 2.
N = −128 + 32 + 16 + 4 + 2 = −74
4
Проверьте по беззнаковому значению
Прочитанная как беззнаковая, комбинация равна 128 + 32 + 16 + 4 + 2 = 182.
Для отрицательного числа беззнаковое значение равно 256 − x, поэтому x = 256 − 182 = 74. Снова получается N = −74.
5
Проверка инверсией
Инвертируйте 1011 0110, получите 0100 1001, затем прибавьте 1 и получите 0100 1010.
0100 1010 равно 64 + 8 + 2 = 74. Значит, исходная комбинация равна −74.
Ответ
N = −74
6Типичные ошибки
Забыть прибавить 1 после инверсии битов. Получится на единицу меньше.
Читать комбинацию в дополнительном коде как беззнаковую, например 1111 1111 как 255 вместо −1.
Считать знаковый бит знаком минус перед остальными битами. В дополнительном коде он стоит −128.
Располагать разряды в неправильном порядке. Разряд с весом 1 всегда справа.
Использовать A = 11 в шестнадцатеричной системе. Буквы начинаются с A = 10.
Путать биты и байты в задачах о памяти. Разделите число бит на 8.
Самопроверка Чему равно −5 в виде 8-битной комбинации в дополнительном коде?
0000 0101
1000 0101
1111 1010
1111 1011
Ответ: 1111 1011. 5 — это 0000 0101. Инверсия даёт 1111 1010, а прибавление 1 даёт 1111 1011. 1111 1010 — забыто прибавить 1, а 1000 0101 — это знак минус перед 5.
7Как выглядят экзаменационные задачи
Лёгкие: из двоичной и шестнадцатеричной в десятичную. Переведите 8-битное двоичное число или 3-значное шестнадцатеричное число в десятичное.
Средние: дополнительный код. Прочитайте значение знаковой 8-битной комбинации или запишите отрицательное число комбинацией и укажите её беззнаковое значение.
Сложные: биты, диапазоны и память. Наибольшее или наименьшее значение, которое умещается в n бит, число бит для k кодов или память, занимаемая изображением.
Пример сложной задачи: изображение 256 × 256 при 24 битах на пиксель занимает 256 · 256 · 24 / 8 / 1024 = 192 KiB.
Самопроверка Какое наименьшее число бит позволяет дать 375 объектам собственные коды?
188
512
8
9
Ответ: 9. 2⁸ = 256 кодов слишком мало, 2⁹ = 512 достаточно, значит, 9 бит. 512 — это число кодов, а не число бит.
Переведите шестнадцатеричное число 0x2BE в десятичное. Найдите N.
0x2BEA = 10 … F = 15
Найти: N
Показать подсказки
Шестнадцатеричные разряды справа стоят 1, 16, 256, 4096.
Замените буквы их значениями (A = 10 … F = 15), умножьте на вес разряда и сложите.
2 = 2, B = 11, E = 14.
Показать ответ и пошаговое решение
Позиционные системы счисления: каждая цифра стоит своего значения, умноженного на степень основания. В двоичной системе разряды стоят 1, 2, 4, 8, 16, …, в шестнадцатеричной 1, 16, 256, …, а A–F обозначают 10–15. В 8-битном дополнительном коде крайний левый бит стоит −128 вместо +128; так хранятся отрицательные числа.
Умножьте каждую цифру на вес её разряда
2·256 + 11·16 + 14·1 = 702
Ответ
0x2BE = 702
Пример 2Средняя
Установите биты так, чтобы они хранили −45 в 8-битном дополнительном коде. Чему равно значение комбинации U, если читать её как число без знака?
N = −458 bit
Найти: U
Показать подсказки
Запишите 45 в двоичном виде, инвертируйте каждый бит, затем прибавьте 1.
45 = 0010 1101₂.
Как число без знака комбинация равна 256 + N.
Показать ответ и пошаговое решение
Установка битов: каждый бит стоит степень двойки (128, 64, …, 1). Одна шестнадцатеричная цифра — это ровно четыре бита, а в 8-битном дополнительном коде крайний левый бит стоит −128. Побитовые операции работают с каждой позицией бита отдельно.
Инвертируйте и прибавьте единицу
45 = 0010 1101
инвертировано: 1101 0010
+1 → 1101 0011
Прочитайте как беззнаковое
1101 0011₂ = 256 − 45 = 211
Ответ
U = 211
Пример 3Сложная
Установите биты в 8-битный результат операции 0111 0001 >> 3. Чему равно значение результата R в десятичной системе?
0111 0001>> 3
Найти: R
Показать подсказки
Сдвиг вправо на 3 перемещает каждый бит на 3 позиций вправо; биты, выходящие за правый край, теряются, а слева входят нули.
Работайте с одной позицией бита за раз, слева направо.
Первые четыре бита результата — 0000.
Показать ответ и пошаговое решение
Установка битов: каждый бит стоит степень двойки (128, 64, …, 1). Одна шестнадцатеричная цифра — это ровно четыре бита, а в 8-битном дополнительном коде крайний левый бит стоит −128. Побитовые операции работают с каждой позицией бита отдельно.
Бит за битом
Сдвиг вправо на 3 перемещает каждый бит на 3 позиций вправо; биты, выходящие за правый край, теряются, а слева входят нули.
0111 0001 >> 3
= 0000 1110
Значение результата
0000 1110₂ = 14
Ответ
R = 14
Вопросы и ответы
Системы счисления: что это?
В повседневной жизни вы считаете в десятичной системе с основанием 10. В ней десять цифр, от 0 до 9, и каждый разряд стоит в десять раз больше разряда справа от него.
В числе 352 цифра 3 означает 300, цифра 5 означает 50, а цифра 2 означает 2. Разряды справа налево стоят 1, 10, 100.
Системы счисления: как решать задачи шаг за шагом?
Позиционные системы счисления: каждая цифра стоит своего значения, умноженного на степень основания. В двоичной системе разряды стоят 1, 2, 4, 8, 16, …, в шестнадцатеричной 1, 16, 256, …, а A–F обозначают 10–15. В 8-битном дополнительном коде крайний левый бит стоит −128 вместо +128; так хранятся отрицательные числа.
Системы счисления: что вы тренируете?
Лёгкая: из двоичной и шестнадцатеричной в десятичную
Средняя: дополнительный код
Сложная: биты, диапазоны и память
В каждой задаче новые значения, поэтому вы учите метод, а не ответ. Застряли? Сначала откройте небольшую подсказку, а полное объяснение — только когда оно понадобится.
Как проходят занятия
В каждой задаче новые значения, поэтому вы учите метод, а не ответ.
Застряли? Сначала откройте небольшую подсказку, а полное объяснение — только когда оно понадобится.
Ваш прогресс, ошибки и сохранённые задачи остаются, поэтому перед экзаменом вы сможете всё повторить.