Кодирование чисел
Чтобы использовать числа, нужно их как-то называть и записывать, нужна система нумерации. Различные системы счёта и записи чисел тысячелетиями сосуществовали и соревновались между собой, но к концу "докомпьютерной эпохи" особую роль при счёте стало играть число "десять", а самой популярной системой кодирования оказалась позиционная десятичная система. В этой системе значение цифры в числе зависит от её места (позиции) внутри числа. Десятичная система счисления пришла из Индии (не позднее VI века нашей эры). Алфавит этой системы: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} — всего 10 цифр, таким образом основание системы счисления — 10. Число записывается как комбинация единиц, десятков, сотен, тысяч и так далее. Пример: 1998=8*100 + 9*101 + 9*102 + 1*103.
Заметим, что выбор числа 10 в качестве основания системы счисления объясняется традицией, а не какими-то замечательными свойствами числа 10. Вообще, представление числа N в р-ричной системе счисления, это:
N=an*pn+an-l*pn-l+...+al*pl+ao, где а¹ 0, аiÎ {0, 1, 2, ..., аi}.
В Вавилоне, например, использовалась 60-ричная система счисления, алфавит содержал цифры от 1 до 59, числа 0 не было, таблицы умножения были очень громоздкими, поэтому очень скоро она была забыта, но отголоски её былой распространённости можно наблюдать и сейчас — деление часа на 60 минут, деление круга на 360 градусов.
Двоичная система счисления
Двоичная система счисления была придумана математиками и философами ещё до появления компьютеров (XVII — XIX вв.). Выдающийся математик Лейбниц говорил: "Вычисление с помощью двоек... является для науки основным и порождает новые открытия... При сведении чисел к простейшим началам, каковы 0 и 1, везде появляется чудесный порядок". Позже двоичная система была забыта, и только в 1936 — 1938 годах американский инженер и математик Клод Шеннон нашёл замечательные применения двоичной системы при конструировании электронных схем. Рассмотрим пример представления числа в двоичной системе счисления:
Пример 2.1.1. Переведём число 2000 в двоичную систему.
1. Делим 2000 на основание новой системы счисления — 2:
2000:2=1000(0 - остаток),
1000:2=500(0),
500:2=250(0),
250:2=125(0),
125:2=62(1),
62:2=31(0),
31:2=15(1),
15:2=7(1),
7:2=3(1),
3:2=1(1)
2. Собираем последнее частное от деления (всегда равно 1) и остатки от деления и записываем их по порядку, начиная снизу :
200010==111110100002
Для проверки переведём полученное число в десятичную систему счисления, для этого:
1. Выделим двоичные разряды числа, то есть, степени числа 2, начиная с 0-й:
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
210 |
29 |
28 |
27 |
26 |
25 |
24 |
23 |
22 |
2' |
2° |
2. Запишем сумму произведений 0 и 1 на соответствующую степень числа 2 (см. представление числа в р-ричной системе счисления):
0*20+0*21+0*22+0*23+l*24+0*25+l*26+l*27+l*28+l*29+l*210= 16+64+128+256+512+1024=2000
Существуют системы счисления, родственные двоичной. При работе с компьютерами иногда приходится иметь дело с двоичными числами, так как двоичные числа заложены в конструкцию компьютера. Двоичная система удобна для компьютера, но неудобна для человека — слишком длинные числа неудобно записывать и запоминать. На помощь приходят системы счисления, родственные двоичной — восьмеричная и шестнадцатеричная.
Например, в шестнадцатеричной системе для записи чисел предназначены 10 арабских цифр и буквы латинского алфавита {А, В, С, D, Е, F}. Чтобы записать число в этой системе счисления, удобно воспользоваться двоичным представлением числа. Возьмём для примера то же число — 2000 или 11111010000 в двоичной системе. Разобьём его на четвёрки знаков, двигаясь справа налево, в последней четвёрке слева припишем незначащий 0, чтобы количество знаков в триадах было по четыре: 0111 1101 0000. Начнём перевод — числу 0111 в двоичной системе соответствует число 7 в десятичной (710=1*20+1*21+1*22), в шестнадцатеричной системе счисления цифра 7 есть; числу 1101 в двоичной системе соответствует число 13 в десятичной (13=1*20 + 0*21 + 1*22 + 1*23), в шестнадцатеричной системе этому числу соответствует цифра D, и, наконец, число 0000 — в любой системе счисления 0. Запишем теперь результат:
111110100002 = 7D016.