Системы счисления
Что проверяют по спецификации:
Суть за минуту
Система счисления — это способ записывать числа с помощью цифр. В позиционной системе значение цифры зависит от её места (разряда), а основание показывает, сколько цифр используется и во сколько раз «весит» каждый следующий разряд. Компьютер хранит всё в двоичной системе, а восьмеричная и шестнадцатеричная нужны людям как короткая запись двоичного кода. На ЕНТ нужно уметь переводить целые числа между системами 2, 8, 10, 16 (и любой другой), складывать и вычитать двоичные числа, сравнивать числа в разных системах и считать единицы в двоичной записи. Почти любую задачу решают два приёма: развёрнутая запись (в десятичную) и деление с остатком (из десятичной).Объясняем просто
Система счисления похожа на упаковку яиц: в десятичной системе мы складываем по 10 в коробку, 10 коробок — в ящик, а в двоичной кладём всего по 2.
Цифра и её место
В числе 555 три одинаковые пятёрки, но они значат 500, 50 и 5. Значение цифры зависит от позиции — поэтому система называется позиционной.
Основание
Основание — это сколько разных цифр есть в системе: в двоичной 2 цифры (0 и 1), в восьмеричной 8 (0–7), в шестнадцатеричной 16 (0–9 и A–F). Самая большая цифра всегда .
Почему компьютер «думает» двоично
У электрического сигнала легко различить два состояния: есть ток или нет. Поэтому всё в компьютере — числа, текст, картинки — хранится как 0 и 1.
8 и 16 — сокращения для людей
Длинную строку из нулей и единиц трудно читать. Каждые 3 двоичные цифры заменяются одной восьмеричной, каждые 4 — одной шестнадцатеричной: .
Главные формулы
Понятия и термины
- Система счисления
- Способ записи чисел с помощью набора знаков (цифр) по определённым правилам
- Позиционная система
- Система, в которой значение цифры зависит от её позиции (разряда) в записи числа: десятичная, двоичная, восьмеричная, шестнадцатеричная
- Непозиционная система
- Система, в которой значение знака не зависит от его места: римская (I, V, X, L, C, D, M)
- Основание системы
- Количество цифр, используемых в позиционной системе; во столько раз единица соседнего старшего разряда больше младшего
- Разряд
- Позиция цифры в записи числа; разряды нумеруют справа налево с нуля
- Двоичная система счисления
- Позиционная система счисления с основанием 2. В ней используются только две цифры: 0 и 1
- Восьмеричная система счисления
- Позиционная система счисления с основанием 8. Для записи чисел используются цифры от 0 до 7
- Шестнадцатеричная система счисления
- Позиционная система счисления с основанием 16. Используются десятичные цифры от 0 до 9 и латинские буквы A, B, C, D, E, F (A = 10, …, F = 15)
- Десятичная система счисления
- Позиционная система счисления с основанием 10. Используются цифры от 0 до 9
- Дополнительный код
- Способ хранить отрицательные целые числа: инвертировать все биты модуля числа и прибавить 1
Разбор темы
Позиционные и непозиционные системы 10 класс
В непозиционной римской системе знак всегда значит одно и то же: I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000. Знаки складываются, но меньший знак перед большим вычитается: , .
В позиционной системе цифра умножается на «вес» разряда — степень основания: . Разряды считаем справа налево, начиная с нуля.
Основание пишут нижним индексом: , , — это три разных числа (5, 65 и 257). В записи числа не может быть цифры, большей или равной основанию: запись невозможна, потому что цифр 8 и 9 в восьмеричной системе нет.
Шестнадцатеричные цифры-буквы: A = 10, B = 11, C = 12, D = 13, E = 14, F = 15. Их надо помнить наизусть.
Перевод в десятичную систему 10 класс
Пронумеруйте разряды справа налево с нуля, умножьте каждую цифру на в степени номера разряда и сложите.
.
. . .
Для двоичных чисел удобно выписать «веса» над цифрами: 128, 64, 32, 16, 8, 4, 2, 1 — и сложить веса там, где стоят единицы: .
Схема Горнера (удобно в уме и в программе): идём по цифрам слева направо, . Для : .
Перевод из десятичной в любую систему 10 класс
Делим число на основание с остатком, частное снова делим, пока частное не станет 0. Остатки, записанные снизу вверх (от последнего к первому), и есть ответ.
25 : 2 = 12, остаток 1
12 : 2 = 6, остаток 0
6 : 2 = 3, остаток 0
3 : 2 = 1, остаток 1
1 : 2 = 0, остаток 1
Читаем снизу вверх: 11001Значит, . Проверка: .
Так же в восьмеричную: ост. 4; ост. 4; ост. 1, ответ . В шестнадцатеричную остатки 10–15 записывают буквами: ост. 13 (D), ост. 9, ответ .
Быстрый способ для двоичной системы — разложить число на степени двойки: , значит единицы стоят в разрядах 6, 5 и 2: .
Быстрый перевод 2 ↔ 8 ↔ 16: триады и тетрады 10 класс
Так как , каждая восьмеричная цифра — это ровно 3 бита (триада). Так как , каждая шестнадцатеричная цифра — 4 бита (тетрада).
Из двоичной в восьмеричную: разбиваем число на тройки справа налево, слева при необходимости дописываем нули, каждую тройку заменяем цифрой: .
Из двоичной в шестнадцатеричную: разбиваем на четвёрки справа налево: .
Обратно: каждую цифру заменяем тремя (для 8) или четырьмя (для 16) битами, не забывая ведущие нули внутри числа: ; .
Между 8 и 16 переходят через двоичную: .
dec bin oct hex dec bin oct hex
0 0000 0 0 8 1000 10 8
1 0001 1 1 9 1001 11 9
2 0010 2 2 10 1010 12 A
3 0011 3 3 11 1011 13 B
4 0100 4 4 12 1100 14 C
5 0101 5 5 13 1101 15 D
6 0110 6 6 14 1110 16 E
7 0111 7 7 15 1111 17 FДвоичная арифметика: сложение, вычитание, умножение 10 класс
Сложение по разрядам справа налево: , , (пишем 0, 1 переносим), (пишем 1, 1 переносим).
1011 (11)
+ 111 ( 7)
------
10010 (18)Вычитание: , , , — занимаем единицу у старшего разряда, она даёт , и . Пример: ().
Умножение — как столбиком в десятичной, только проще: умножаем на 0 или на 1 и складываем сдвинутые строки. ().
Умножить на — дописать справа нулей (); целочисленно разделить на — отбросить последних цифр. Так же в любой системе: умножение на дописывает ноль.
Проверяйте себя переводом в десятичную: ошибку в переносе так заметить легче всего.
Сравнение чисел и подсчёт единиц 10–11 класс
Чтобы сравнить числа в разных системах, переведите их в одну систему (обычно в десятичную или двоичную). , , .
Чем больше основание, тем больше «весит» та же запись: .
Число разных -значных записей в системе — , наибольшее -значное число — : например, , , .
Количество единиц: переведите число в двоичную и посчитайте. Для выражений со степенями пользуйтесь шаблонами: — одна единица; — единиц; — единиц. Степени 4 и 8 сводятся к двойке: , .
Чётность: двоичное число чётно, если оканчивается на 0. В системе с основанием последняя цифра — это остаток от деления числа на .
Отрицательные числа и диапазон ячейки 10–11 класс
В битах без знака помещаются числа от до : в байте от 0 до 255.
Со знаком старший бит означает знак (0 — плюс, 1 — минус), диапазон от до : в байте от до .
Прямой код — модуль числа плюс бит знака. Обратный код отрицательного числа — инвертировать все биты модуля. Дополнительный код — обратный код плюс 1, или сразу . Компьютер хранит отрицательные целые именно в дополнительном коде, потому что тогда вычитание сводится к сложению.
Пример: в 8 битах. , инверсия , плюс 1: . Проверка: .
Системы счисления в Python 10–11 класс
bin(n), oct(n), hex(n) возвращают строку с префиксом: bin(10) → '0b1010', oct(10) → '0o12', hex(255) → '0xff'. Префикс убирают срезом [2:].
int(s, base) переводит строку из системы с основанием от 2 до 36 в целое: int('ff', 16) → 255, int('212', 3) → 23.
format(n, '08b') даёт двоичную запись ровно из 8 цифр с ведущими нулями; 'o' и 'X' — восьмеричная и шестнадцатеричная (заглавные буквы).
bin(n).count('1') — количество единиц в двоичной записи. Ручной перевод — цикл с n % q и n // q (см. панель кода).
Примеры задач с решением
- Делим на 2: ост. 1; ост. 0; ост. 1; ост. 1; ост. 1; ост. 0; ост. 0; ост. 1.
- Остатки снизу вверх: 1 0 0 1 1 1 0 1.
- Проверка: .
- Триады справа налево: → , , , получаем .
- Тетрады справа налево: → , , получаем .
- Проверка через десятичную: и .
- Разряд 0: , пишем 0, переносим 1.
- Разряд 1: , пишем 1, переносим 1. Разряд 2: , пишем 0, переносим 1.
- Разряд 3: , пишем 0, переносим 1 в новый разряд 4.
- Проверка: .
- .
- .
- .
- Сравниваем 100, 99, 102, 101.
- Развёрнутая форма: .
- Уравнение , отсюда .
- Проверка: цифры 3 и 1 меньше 8, .
- Каждую восьмеричную цифру — в триаду: , , , получаем .
- Делим на тетрады справа налево: → , , .
- Проверка: ; .
Сложные задачи: шаг за шагом
Идея: Сведите всё к степеням двойки и используйте шаблон .
- Степени двойки, . Выражение: .
- Шаблон разности— это единиц, за которыми идут 4 нуля.
- Сложениедаёт одну единицу в 40-м разряде, он не пересекается с разрядами 4–29, поэтому переносов нет: .
Идея: Последняя цифра записи — это остаток от деления числа на основание.
- Условие на остаток, значит делится на .
- ДелителиДелители 21: 1, 3, 7, 21. Основание должно быть больше цифры 2, поэтому .
- Проверка— все записи оканчиваются на 2.
Идея: Инвертировать биты модуля и прибавить 1 (или вычислить ).
- Модуль(8 бит).
- Обратный кодИнвертируем все биты: .
- Плюс 1. Проверка: .
Частые ловушки на ЕНТ
- Остатки при делении читают снизу вверх, а не сверху вниз; иначе превратится в вместо .
- Разбивать на триады и тетрады нужно справа налево (от младшего разряда), а недостающие нули дописывать слева.
- При переводе , … в двоичную каждая цифра даёт ровно 4 бита: , а не с потерей нулей внутри числа.
- Цифра не может быть больше или равна основанию: запись или недопустима — такой вариант ответа сразу отбрасывайте.
- При двоичном сложении , а не 2: пишем 0 и переносим единицу; при пишем 1 и тоже переносим.
Запомнить
В десятичную — умножай цифры на степени основания и складывай; из десятичной — дели с остатком и читай остатки снизу вверх; 8 — это 3 бита, 16 — это 4 бита.
Проверь себя
- 43
- 45
- 47
- 90
Показать ответ
45 .
Показать ответ
.
Показать ответ
, , получаем .
- 8
- 7
- 9
- 16
Показать ответ
8 .
Показать ответ
.
- Двоичная
- Шестнадцатеричная
- Римская
- Восьмеричная
Показать ответ
Римская В римской записи знак (например, X = 10) не меняет значение в зависимости от места.