Позиционные системы счисления
В позиционной системе счисления
число записывают в виде цепочки специальных
символов:
anan–1
... a2a1
(1)
Символы ai называют цифрами.
Они обозначают порядковые счетные количества,
начиная с нуля и до значения на единицу меньшего
числа q, называемого основанием системы
счисления. То есть, если q — основание, то
значения цифр лежат в интервале [0, q–1]
(включая границы).
Положение цифры в записи числа (1)
называют ее позицией, или разрядом.
Замечание 1. На этих страницах
предпочтение отдается термину “позиция”.
Во-первых, слово “позиция” хорошо согласуется с
понятием “позиционная система счисления”,
во-вторых, термин “позиционный вес” или “вес
позиции” звучит лучше, понятнее и проще, чем
“разрядный вес” или “вес разряда”. Однако
учитель может и должен время от времени
напоминать ученикам, что “позиция” и “разряд”
— эквивалентные термины.
Замечание 2. Определение
позиционной системы счисления, данное в текстах
для ученика, не совсем точное. Одной только
зависимости вклада цифры от позиции
недостаточно. Например, в римской системе
счисления вклад цифры также зависит от позиции
(числа IV и VI — разные), но эта система не является
позиционной. Точным определением можно считать
всю совокупность правил построения числа,
приведенную в данном контексте для учителя (то
есть, наряду с фактом позиционной зависимости в
определение входят: конечность множества цифр и
правило нахождения числа по его записи).
Позиции нумеруются справа налево.
Цифру, расположенную в первой позиции, называют младшей
цифрой числа, в последней — старшей.
С каждой позицией связано число,
которое мы будем называть ее весом (весом
позиции).
Веса позиций определяются по
следующему рекурсивному правилу:
1. Вес младшей позиции равен 1.
2. Вес каждой следующей позиции
получается из веса предыдущей умножением на
основание системы.
Пусть q — основание системы
счисления. Тогда правило для вычисления
позиционных весов wi можно записать
более кратко в виде рекуррентной формулы:
1. w1 = 1.
2. wi = wi–1·q (для
всех i > 1).
В позиционной системе счисления
запись
anan–1
... a2a1
(1)
означает число N, равное сумме
произведений цифр на их позиционные веса:
N = an·wn
+ an–1·wn–1 + ... + a2·w2
+ a1·w1.
(2)
Произведение цифры на ее позиционный
вес (то есть ai·wi) будем
называть позиционным вкладом цифры.
Формула (2) и положена в основу правил
перевода чисел из одной системы в другую,
предлагаемых в текстах для ученика.
В десятичной системе счисления числа
записываются при помощи десяти арабских знаков:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9.
Позиционные веса этой системы: ..., 1000, 100, 10, 1.
Запись 4627, например,
“расшифровывается” так:
462710 = 4·1000 + 6·100 + 2·10 + 7·1.
В двоичной системе счисления числа
записываются при помощи двух арабских знаков: 0 и
1. Позиционные веса этой системы: ..., 256, 128, 64, 32, 16, 8,
4, 2, 1.
Например, запись 10101
“расшифровывается” так:
101012 = 1·16 + 0·8 + 1·4 + 0·2 + 1·1.
Заметим, что из рекурсивного правила
вычисления весов вытекает, что wi = qi–1
и, следовательно, запись (2) эквивалентна
традиционной записи в виде степенного
многочлена:
N = an·qn–1
+ an–1·qn–2 + ... + a2·q
+ a1.
(3)
Докажем это по индукции. База
индукции при i = 1 проверяется
непосредственно: w1 = q0 = 1.
Индукционное предположение: пусть
утверждение справедливо при некотором n:
wn = qn–1.
Докажем, что оно будет справедливо и
при n + 1.
То есть докажем справедливость равенства:
wn+1 = qn.
В самом деле, wn+1 = wn·q
(по рекурсивному определению веса позиции), а wn
= qn–1 по индукционному предположению.
Получается:
wn+1 = wn·q = qn–1·q
= qn.
Докажем, что любое число представимо в
форме (1) (теорема 1) единственным образом (теорема
2).
Теорема 1 (существование). Любое
число m можно представить в форме (1) при любом q
> 1.
Доказательство. Докажем по
индукции. Для m = 0
и m = 1 легко построить нужное представление —
это соответственно 0 и 1 (при любом q > 1).
Допустим, нам удалось представить число m в
форме (1). Найдем тогда представление для m + 1.
Для этого достаточно преобразовать сумму
an·qn–1 + an–1·qn–2
+ ... + a2·q + a1 + 1 к форме (1).
Если a1 < (q–1), то нужное
представление получается заменой цифры a1
на a'1 = a1 + 1.
Если a1 = (q–1), получаем
перенос единицы в следующую позицию:
an·qn F–1 + an–1·qn–2
+ ... + (a2 + 1)·q + 0.
Далее рассуждаем аналогично. Если a2
< (q–1), то нужное представление получается
заменой цифры a2 на a'2 = a2
+ 1. Если a2 = (q–1), то a2
заменяем нулем и переносим единицу в следующую
позицию.
Либо на каком-то i < n мы
закончим построение, либо получим запись 1000...0 —
единицу и n нулей справа. Доказательство
завершено.
Перед теоремой 2 докажем лемму.
Лемма. Вклад каждой ненулевой
цифры в записи (1) превышает сумму вкладов цифр,
расположенных правее нее.
anan–1
... a2a1.
(1)
Доказательство. Докажем, что при
любом n > 1:
an·qn–1 > an–1·qn–2
+ ... + a2·q + a1.
Цифры ai лежат в интервале [0, q–1],
значит, достаточно доказать неравенство при
наименьшей ненулевой цифре в левой части и
максимальных цифрах в правой:
qn–1 > (q–1)·qn–2 +
... + (q–1)·q + (q–1).
В правой части выносим множитель (q–1)
за скобку:
(q–1)·qn–2 + ... + (q–1)·q
+ (q–1) = (q–1)·(qn–2 + ... + q + 1).
Сумму геометрической прогрессии в
последней скобке вычислим по известной формуле:
(q–1)·(qn–2 + ... + q + 1) = (q–1)·(qn–1–1)/(q–1)
= qn–1 – 1.
Получаем очевидное неравенство,
которое доказывает лемму:
qn–1 > qn–1 – 1.
Теорема 2 (единственность). Число в
форме (1) представляется единственным способом.
Доказательство. Из леммы следует,
что числа, имеющие в своей записи разное
количество цифр (незначащие нули слева не
учитываются), не могут быть равными: число с
большим количеством цифр всегда больше. Значит,
нужно только доказать, что если ai не
равно bi для всех i от 1 до n, то
записи
anan–1
... a2a1
(4)
bnbn–1
... b2b1
(5)
не могут обозначать одно и то же число.
Просмотрим записи (4) и (5) слева направо
в поисках несовпадающих цифр. Пусть это будут ak
и bk и пусть ak – bk = d.
На k-м месте в записи обнаружилась
разница в d·qk–1. Эта разница должна
компенсироваться вкладами позиций,
расположенных правее. Но это невозможно, так как
по лемме сумма вкладов позиций, расположенных
правее, всегда меньше вклада текущей позиции.
Теорема доказана.
Перевод в десятичную
Для перевода чисел из системы с
основанием q в десятичную систему можно
воспользоваться формулой (2), выполнив в ней
умножения и сложения.
N = an·wn
+ an–1·wn–1 + ... + a2·w2
+ a1·w1
(2)
При переводе из двоичной системы
задействовано только сложение (ибо на 1 можно не
умножать). Таким образом, получаем правило
перевода, сформулированное в Читальном зале:
Для перевода
из двоичной системы в десятичную нужно над
каждой двоичной цифрой записать вес ее позиции и
сложить числа, записанные над единицами.
Так, например, для числа 10111 получаем:
101112 = 16 + 4 + 2 + 1 = 2310
Общее правило перевода из q-ичной
системы в десятичную звучит так:
Для перевода
из q-ичной системы в десятичную нужно над
каждой цифрой записать вес ее позиции и найти
сумму произведений цифр на их позиционные веса
(то есть найти сумму позиционных вкладов).
Так, например, для числа 102123
получаем:
Складываем цифры, умноженные на их
позиционные веса (позиции с нулевыми цифрами,
понятно, можно опустить):
102123 = 1·81 + 2·9 + 1·3 + 2·1
= 10410.
Перевод в q-ичную
Для перевода чисел из десятичной
системы в систему с основанием q будем
по-прежнему опираться на формулу (2):
N = an·wn
+ an–1·wn–1 + ... + a2·w2
+ a1·w1.
(2)
Алгоритм перевода.
I. Повторять, пока число не обратится
в ноль:
1. Найти первую слева позицию, вес
которой не больше текущего числа. Записать в
позицию максимально возможную цифру, такую, при
которой ее позиционный вклад (произведение цифры
на вес) не превышает текущего числа.
2. Уменьшить текущее число на вклад
построенной позиции.
II. В позиции, не занятые построенными
цифрами, записать нули.
В каждой позиции берется максимально
возможная цифра, так как по лемме вклад этой
цифры нельзя компенсировать цифрами,
расположенными правее. Алгоритм будет работать в
силу доказанного существования (теорема 1) и
единственности (теорема 2) представления числа в
форме (1).
Для двоичной системы получаем вариант
алгоритма, приведенный в материале для ученика.
Для перевода в двоичную нужно
построить шаблон с весами двоичных цифр:
Перевод числа выполняется по
следующему алгоритму:
I. Повторять, пока число не обратится в
ноль:
1. Записать 1 в первую слева позицию, вес
которой не больше текущего числа.
2. Уменьшить текущее число на вес
построенной единицы.
II. В позиции, не занятые единицами,
записать нули.
Такой способ перевода на практике
оказывается гораздо проще и быстрее
традиционного алгоритма с нахождением остатков.
При переводе из десятичной системы в
троичную приходится учитывать и сами
позиционные веса, и их удвоение. Для быстрого
перевода можно построить таблицу, строчки
которой соответствуют позициям цифр, столбцы —
цифрам, а клетки — вкладам цифры в число, в
зависимости от ее позиции в записи числа:
Скажем, вклад цифры 2 в позиции 243 —
число 486, а в позиции 9 — число 18.
Для перевода в троичную систему нужно
просматривать таблицу по строкам в поисках
наибольшего числа, не превосходящего текущее
значение.
Для примера переведем в троичную
систему число 183. Подходящее значение
расположено в третьей строке и первом столбце:
Значит, троичное число начинается
цифрой 2:
18310 = 2????3
Далее работаем с числом 183–162 = 21:
18310 = 202??3
Для числа 21–18 = 3 в таблице есть точное
значение, перевод закончен:
18310 = 202103.
Для систем с большим основанием
соответствующие таблицы будут, конечно,
объемнее. Построим в качестве последнего примера
таблицу для перевода в шестнадцатеричную
систему счисления:
|
F |
E |
D |
C |
B |
A |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
4096 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
8192 |
4096 |
256 |
3840 |
3570 |
3315 |
3060 |
2805 |
2550 |
2295 |
2040 |
1785 |
1530 |
1275 |
1020 |
765 |
510 |
256 |
16 |
240 |
224 |
208 |
192 |
176 |
160 |
144 |
128 |
112 |
96 |
80 |
64 |
48 |
32 |
16 |
1 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Пусть нужно перевести в
шестнадцатеричную систему число 4255. Ищем в
таблице (слева направо по строкам, начиная
сверху) первое число, которое окажется не больше
исходного числа 4255:
|
F |
E |
D |
C |
B |
A |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
4096 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
8192 |
4096 |
256 |
3840 |
3570 |
3315 |
3060 |
2805 |
2550 |
2295 |
2040 |
1785 |
1530 |
1275 |
1020 |
765 |
510 |
256 |
16 |
240 |
224 |
208 |
192 |
176 |
160 |
144 |
128 |
112 |
96 |
80 |
64 |
48 |
32 |
16 |
1 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Получаем первую цифру 1 в позиции 4096:
Осталось закодировать 4255 – 4096 = 159.
Строку 256 пропускаем (соответствующая
цифра будет 0), а в строке 16 находим подходящее
значение 144:
|
F |
E |
D |
C |
B |
A |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
4096 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
… |
8192 |
4096 |
256 |
3840 |
3570 |
3315 |
3060 |
2805 |
2550 |
2295 |
2040 |
1785 |
1530 |
1275 |
1020 |
765 |
510 |
256 |
16 |
240 |
224 |
208 |
192 |
176 |
160 |
144 |
128 |
112 |
96 |
80 |
64 |
48 |
32 |
16 |
1 |
15 |
14 |
13 |
12 |
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
Получаем цифры в позициях 256 и 16:
Осталось закодировать 159 – 144 = 15.
Понятно, что это значение младшей цифры:
Получается: 425510 = 109F16.
Действия над числами
Этот раздел представлен в материале
для ученика схематично, в ознакомительном
порядке.
Теме можно посвятить отдельный,
большой и достаточно интересный урок, но
материала и так получилось много — трудно объять
необъятное!
В простом, ознакомительном варианте
показано, что действия над числами в любой
системе счисления выполняются точно так же, как и
в десятичной системе. Странно, если было бы иначе,
ведь числа во всех позиционных системах строятся
по одним и тем же правилам, значит, и действия над
ними должны выполняться одинаково.
Раздел поддержан домашними заданиями варианта
3. Эти упражнения можно рекомендовать
любознательным школьникам в качестве
индивидуальных заданий. |