Представление чисел в позиционных системах счисления. Арифметические операции в позиционных системах счисления
Введение
Системы счисления — это совокупность правил и символов, с помощью которых записываются числа. Они лежат в основе всей математики и вычислительной техники. Без понимания систем счисления невозможно освоить принципы работы компьютеров, так как вся цифровая информация внутри ЭВМ представляется и обрабатывается в виде чисел, чаще всего в двоичной системе.
В повседневной жизни мы используем десятичную систему счисления, которая исторически сложилась благодаря наличию десяти пальцев у человека. Однако для нужд вычислительной техники удобнее другие основания:
- двоичная — используется непосредственно в работе процессора и памяти;
- восьмеричная и шестнадцатеричная — применяются для удобного представления больших двоичных чисел.
Понимание позиционных систем счисления позволяет:
- понимать, как компьютеры хранят и обрабатывают данные;
- выполнять перевод чисел между различными системами;
- уверенно выполнять арифметические операции в двоичном, восьмеричном и шестнадцатеричном кодах;
- анализировать ошибки и результаты при программировании и проектировании цифровых схем.
Позиционные и непозиционные системы счисления
Системы счисления делятся на два основных типа — позиционные и непозиционные. Они различаются тем, влияет ли положение (позиция) цифры в числе на её значение.
Непозиционные системы счисления
- В непозиционных системах значение цифры не зависит от её места в записи числа.
- Каждая цифра (символ) обозначает фиксированное количество, и при записи числа просто суммируются значения всех символов.
- Пример: римская система счисления:
- $I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000$
- $Число XIII = 10 + 1 + 1 + 1 = 13$
- Особенности:
- используется ограниченное количество символов;
- не используется ноль;
- выполнение арифметических операций затруднено (например, умножение и деление очень неудобны).
- Другие примеры: древнеегипетская, шумерская, майяская системы.
Позиционные системы счисления
- В позиционных системах значение цифры зависит от её позиции (разряда).
- Каждая позиция имеет «вес» — это степень основания системы.
- Основание системы (q) — количество различных символов (цифр), используемых для записи чисел.
- Примеры:
- Двоичная (основание 2): $0, 1$
- Восьмеричная (основание 8): $0–7$
- Десятичная (основание 10): $0–9$
- Шестнадцатеричная (основание 16): $0–9, A–F (A=10, B=11, ..., F=15)$
Особенности позиционных систем:
- В позиционных системах есть цифра 0, которая показывает, что в разряде нет значения.
- С ними легко считать — удобно выполнять сложение, вычитание, умножение и деление.
- С их помощью можно записать любые числа — как целые, так и дробные.
Перевод чисел между системами счисления
Перевод чисел между системами счисления — это процесс преобразования чисел из одной системы с основанием в другую систему с основанием. Этот навык необходим для понимания работы ЭВМ, так как внутри компьютеров данные могут представляться в двоичной, восьмеричной и шестнадцатеричной формах.
Перевод из любой системы в десятичную
- Каждая цифра числа умножается на основание системы в степени, равной её позиции (считая справа налево, начиная с 0).
- Полученные значения складываются.
$N = aₙ × qⁿ + aₙ₋₁ × qⁿ⁻¹ + ... + a₁ × q¹ + a₀ × q⁰$
- $aᵢ$ — цифры числа
- $q$ — основание системы (2, 8, 10, 16 и т.д.)
Пример 1 (двоичная система):
$1011₂ = 1×2³ + 0×2² + 1×2¹ + 1×2⁰= 8 + 0 + 2 + 1= 11₁₀$
Пример 2 (шестнадцатеричная система):
$2A₁₆ = 2×16¹ + 10×16⁰= 32 + 10= 42₁₀$
Перевод из десятичной в любую систему
- Делить число на основание системы и записывать остатки.
- Повторять, пока частное не станет нулём.
- Остатки записываются в обратном порядке.
Пример 1: $25_{10}$ → двоичная:
- $25 / 2 = 12 (ост.1)$
- $12 / 2 = 6 (ост.0)$
- $6 / 2 = 3 (ост.0)$
- $3 / 2 = 1 (ост.1)$
- $1 / 2 = 0 (ост.1)$
Результат: $11001₂$
Пример 2: $255₁₀$ → шестнадцатеричная:
- $255 ÷ 16 = 15 (остаток 15 → F)$
- $15 ÷ 16 = 0 (остаток 15 → F)$
Результат: $FF₁₆$
Перевод дробных чисел
- Целую часть переводим как обычно — делим на основание и записываем остатки.
- Дробную часть умножаем на основание и записываем целые части результатов по порядку, пока не получится 0 или нужное количество знаков.
- Соединяем обе части через запятую (точку).
Пример: $10.625_{10}$ → двоичная:
- Целая часть: $10₁₀ → 1010₂$
- Дробная часть:
- $0.625 × 2 = 1.25 → 1$
- $0.25 × 2 = 0.5 → 0$
- $0.5 × 2 = 1.0 → 1$
Результат: $1010.101₂$
Перевод между степенными системами через двоичную
Чтобы быстро перевести числа из восьмеричной в шестнадцатеричную (и наоборот), удобно использовать двоичную систему как промежуточную:
- Каждая восьмеричная цифра = 3 двоичных бита
- Каждая шестнадцатеричная цифра = 4 двоичных бита
Алгоритм:
- Каждую цифру числа заменить её двоичным эквивалентом (3 или 4 бита).
- Полученные биты объединить в одну двоичную запись.
- При необходимости сгруппировать биты обратно по 3 или 4 и перевести в нужную систему.
Пример: $7B₁₆$ → двоичная:
- $7 = 0111, B = 1011 → 0111 1011₂$
Пример: $745₈$ → двоичная:
- $7 = 111, 4 = 100, 5 = 101 → 111 100 101₂$
Перевод через десятичную как универсальный метод
- Для любых нестепенных систем сначала удобно перевести в десятичную, затем в нужную.
- Это универсальный и надёжный способ.
Распространённые ошибки
- Запись остатков не в обратном порядке при переводе из десятичной.
- Путаница с буквами A–F в шестнадцатеричной системе.
- Пропуск нулей при группировке битов в переводе между 2 ↔ 8 ↔ 16.
- Смешивание целой и дробной частей при переводе.
Арифметические операции в позиционных системах
Арифметические операции в позиционных системах счисления выполняются по тем же правилам, что и в десятичной системе, но с учётом основания системы. Это значит, что при переходе через основание происходит перенос в следующий разряд.
Сложение
- Складываем цифры справа налево (от младших разрядов к старшим).
- Если сумма цифр достигает или превышает основание системы, записываем остаток, а 1 переносим в следующий разряд.
$1011₂ + 0110₂ = 10001₂$
Пошагово:
- 1 + 0 = 1
- 1 + 1 = 10 → пишем 0, переносим 1
- 0 + 1 + 1 (перенос) = 10 → пишем 0, переносим 1
- 1 + 0 + 1 (перенос) = 10 → пишем 0, переносим 1
Итого: $10001₂$
Вычитание
- Вычитаем цифры справа налево (от младших разрядов к старшим).
- Если верхняя цифра меньше нижней, занимаем 1 у старшего разряда слева.
$1011₂ - 0011₂ = 1000₂$
Пошагово:
- 1 − 1 = 0
- 1 − 1 = 0
- 0 − 0 = 0
- 1 − 0 = 1
Итого: $1000₂$
Умножение
- Умножаем каждую цифру второго числа на каждую цифру первого числа, начиная с младших разрядов.
- Каждый новый результат сдвигаем влево на один разряд (как при умножении в столбик в десятичной системе).
- В конце складываем все полученные строки.
101₂
× 011₂
-------
101
101
101
-------
1111₂
- 1 × 101 = 101
- 1 × 101 = 101 (сдвигаем на 1 влево)
- 0 × 101 = 000 (сдвигаем на 2 влево)
- Складываем: 101 + 1010 + 000 = 1111₂
Деление
- Делим как в обычной десятичной системе, только используем цифры выбранной системы.
- Определяем, сколько раз делитель помещается в текущей части делимого, записываем результат в ответ.
- Умножаем делитель на найденное число, вычитаем и спускаем следующую цифру.
- Продолжаем, пока не закончатся все цифры.
$1100₂ ÷ 10₂ = 110₂$
Пошагово:
- 10₂ (2) входит в 11₂ (3) — 1 раз → остаток 1
- Спускаем следующую цифру: получаем 10₂ (2)
- 10₂ входит в 10₂ — 1 раз → остаток 0
- Спускаем следующую цифру: снова 0 — пишем 0
Итого: $110₂$ (в десятичной это 6 ÷ 2 = 3)
Правила для других систем (8, 16)
- В восьмеричной системе основание 8 — перенос происходит при сумме ≥ 8.
- В шестнадцатеричной системе основание 16 — используются цифры 0–9 и буквы A–F.
- Пример (шестнадцатеричная):
$A2₁₆ + 3F₁₆ = E1₁₆$
Объяснение: $2+F(15)=17 → 1, перенос 1; A(10)+3+1=14(E).$
Советы при выполнении арифметики в позиционных системах
- Проверяйте результат переводом в десятичную систему.
- Используйте таблицы сложения и умножения для систем с основанием больше 10.
- Для шестнадцатеричной системы держите в памяти соответствие: $A=10, B=11, C=12, D=13, E=14, F=15.$
Итоги
Подведём основные выводы по теме:
- Системы счисления — это способы записи чисел с использованием определённого набора символов и правил.
- Непозиционные системы (например, римская) не используют принцип разрядности и неудобны для вычислений.
- Позиционные системы (двоичная, восьмеричная, десятичная, шестнадцатеричная) используют разряды, что упрощает операции и позволяет представлять любые числа.
- Представление чисел в позиционных системах основано на формуле разложения по степеням основания, где вес цифры зависит от её позиции.
- В двоичной системе используются только 0 и 1.
- В восьмеричной — 0–7, в шестнадцатеричной — 0–9 и A–F.
- Перевод чисел между системами счисления:
- Из любой в десятичную — по формуле с умножением на степени основания.
- Из десятичной в любую — делением с записью остатков в обратном порядке.
- Между степенными системами (2, 8, 16) удобно через двоичную систему.
- Для дробей используется умножение дробной части на основание.
- Арифметические операции в позиционных системах:
- Выполняются по тем же принципам, что и в десятичной системе.
- При сумме ≥ основанию выполняется перенос, при вычитании — заимствование.
- Умножение и деление выполняются поразрядно.
- Практическое значение:
- Знание систем счисления необходимо для понимания работы компьютеров и цифровых схем.
- Позволяет анализировать данные на уровне битов и байтов.
- Является базой для дальнейшего изучения архитектуры ЭВМ, программирования и сетевых технологий.
Вывод: умение представлять числа в позиционных системах и выполнять арифметические операции в них — это базовый навык, необходимый каждому специалисту в области информатики и вычислительной техники.