Для изображения чисел используются определенные приемы и правила, называемые системами счисления. Все известные системы счисления делятся на две группы: позиционные системы счисления и непозиционные системы счисления.
В непозиционной системе счисления значение символа (цифры, буквы, знака или иероглифа) постоянно и не зависит от позиции этого символа в изображаемом числе. В позиционных системах наоборот, значение символа зависит от позиции этого символа в изображаемом числе. Непозиционные системы, как более простые, появились исторически гораздо более раньше позиционных систем. Ими пользовались древние славяне, китайцы и другие народы. До наших дней дошла одна из разновидностей непозиционных систем — римская система счисления. В ней используются так называемые римские цифры: I — 1, V — 5, X — 10, L — 50, C — 100, D — 500, M — 1000. Значение числа вычисляется суммированием всех чисел с учетом правила, что если цифра меньшего веса стоит слева от следующей за ней цифрой большего веса, то она имеет знак минус, а если справа — то знак плюс. Например, число MCCXXXIV определяется следующим образом:
1000 + 100 + 100 + 10 + 10 + 10 — 1 + 5 = 1234
Непозиционные системы счисления обладают двумя существенными недостатками. Во-первых, при увеличении диапазона представляемых чисел увеличивается число различных символов в изображаемых числах. Во-вторых, очень сложны правила выполнения даже самых простых арифметических действий.
Позиционные системы счисления обладают тем чрезвычайно важным свойством, что все числа, и малые, и большие, могут быть записаны с помощью конечного набора различных символов. Кроме того, правила действия с числами могут быть резюмированы в виде таблиц сложения и умножения. Изобретение позиционных систем счисления имело неоценимые последствия для дальнейшего развития человеческой цивилизации. Впервые такие системы счисления стали использовать древние шумерийцы и индусы.
В позиционных системах счисления любое число X изображается в виде полинома
. (1.1)
B этом выражении aj называются разрядными коэффициентами, S — основанием системы счисления, а Sj – весовыми коэффициентами. Значение любого разрядного коэффициента в изображаемом числе может лежать в диапазоне от 0 до S-1. В настоящее время во всех странах мира используется десятичная система счисления, представляющая собой позиционную систему счисления с основанием S=10. Разрядные коэффициенты при изображении чисел в десятичной системе счисления могут принимать значения в диапазоне от 0 до 9. Для краткости вместо записи числа в виде полинома записывают только последовательность разрядных коэффициентов этого полинома. Когда мы пишем десятичное число X10=163,28, то подразумеваем величину
Нижний индекс в записи числа указывает на основание используемой системы счисления. В принципе, роль основания способно играть любое вещественное число. Переход от системы счисления с произвольным основанием к десятичной системе счисления осуществляется при помощи выражения 1.1, которое справедливо как для целой, так и для дробной частей числа.
Возьмем, например, восьмеричное число 3678 и преобразуем его в десятичное. Вполне логично записать это число как
.
Переход от десятичной системы счисления к системе счисления с произвольным основанием выполняется в соответствии со следующими правилами: целая часть десятичного числа делится на основание новой системы счисления, запись целой части нового числа производится с последнего результата деления (старший разряд целой части); дробная часть десятичного числа умножается на основание новой системы счисления, запись результата нового числа производится с первого результата умножения (старший разряд дробной части).
То же самое десятичное число 24710 можно записать в виде 111101112 двоичного числа. Действительно
247:2=123+1 (X0=1)
123:2=61+1 (Х1=1)
61:2=30+1 (Х2=1)
30:2=15+0 (Х3=0)
15:2=7+1 (Х4=1)
7:2=3+1 (Х5=1)
3:2=1+1 (Х6=1)
1:2=0+1 (Х7=1)
Записываем число в новой системе счисления с последнего результата деления: 111101112.
Осуществим перевод дробного десятичного числа 125,4810 в двоичное. Переведем сначала целую часть:
125:2=62+1 (Х0=1)
62:2=31+0 (Х1=0)
31:2=15+1 (Х2=1)
15:2=7+1 (Х3=1)
7:2=3+1 (Х4=1)
3:2=1+1 (Х5=1)
1:2=0+1 (Х6=1)
Записываем целую часть: 12510=11111012.
Переведем теперь дробную часть:
0,48?2=0+0,96 (Х-1=0)
0,96?2=1+0,92 (Х-2=1)
0,92?2=1+0,84 (Х-3=1)
0,84?2=1+0,68 (Х-4=1)
0,68?2=1+0,36 (Х-5=1)
0,36?2=0+0,72 (Х-6=0)
0,72?2=1+0,44 (Х-7=1)
и т.д.
Следует иметь в виду, что дробная часть числа в новой системе счисления может иметь большое количество разрядов и даже оказаться бесконечной. Поэтому нет необходимости находить все разряды, а можно ограничиться лишь их частью исходя из требований точности представления числа. В нашем случае ограничимся семью разрядами дробной части и запишем ее с первого результата умножения 0,4810=0,01111012. Окончательно получается 125,4810=1111101,01111012.
Для представления числа с основанием системы счисления S средствами цифровой вычислительной техники необходимо, чтобы электронное устройство могло формировать на выходе и воспринимать на входе S различных состояний электрических сигналов. При этом каждый разряд должен обрабатываться своим отдельным узлом данного устройства. Поэтому, чем выше основание системы счисления, в которой представляются обрабатываемые числа, тем меньше требуется разрядов и, следовательно, узлов электронного устройства. С другой стороны, количество различных состояний электрических сигналов возрастает. Так для представления десятичных чисел средствами электронной техники необходимо, чтобы электронный узел был способен различать десять состояний (уровней напряжения или тока) электрического сигнала. Реализация такого устройства является достаточно сложной технической задачей.
Кроме того, такое устройство будет помехонезащищенным из-за сложности идентификации одного из десяти параметров электрического сигнала, что повысит вероятность ошибочного результата обработки. Требования помехоустойчивости в вычислительных устройствах имеют больший приоритет перед аппаратными затратами и, поэтому, наибольшее распространение получила двоичная система счисления, оперирующая с двумя разрядными коэффициентами 0 и 1. Один разряд двоичного кода носит название бит. Группа разрядов из восьми бит называется байтом. Логическому нулю в цифровых вычислительных устройствах обычно соответствует электрический сигнал с низким уровнем напряжения (тока), а логической единице – с высоким.
Кроме двоичной в цифровых вычислительных устройствах часто применяются восьмеричная, шестнадцатеричная и десятичная системы счисления. В десятичной системе счисления осуществляется, как правило, ввод и вывод информации в цифровые вычислительные устройства с помощью специальных преобразователей с целью упрощения человеко-машинного взаимодействия. Восьмеричная и шестнадцатеричная системы счисления используются в основном из-за компактности записи чисел и удобства перевода двоичных кодов в восьми- и шестнадцатеричные. Для записи шестнадцатеричных чисел используются шестнадцать знаков — десять арабских цифр от 0 до 9 для записи первых десяти цифр и символы латинского алфавита от A до F для записи оставшихся шести цифр от 10 до 15 (A соответствует цифре 10, В- 11, C- 12, D- 13, E- 14, F- 15). Так, например, шестнадцатеричное число 4D16 соответствует десятичному числу 7710, так как .
Достоинство восьмеричной и шестнадцатеричной форм записи числа – это легкость перевода из двоичной формы в восьмеричную (шестнадцатеричную) и наоборот. Так как 8=23 и 16=24, то для записи одного разряда восьмеричного числа требуются три разряда двоичного, а одного разряда шестнадцатеричного – четыре разряда двоичного. Например, чтобы перевести шестнадцатеричное число 1ED9,0A16 в двоичную форму, необходимо каждую шестнадцатеричную цифру представить эквивалентным четырехразрядным двоичным числом: 116=00012, E16=11102, D16=11012, 916=10012, 016=00002, A16=10102. В итоге, отбросив три незначащих нуля перед первой единицей, получим число 1111011011001,000010102.
Для ввода и вывода десятичной информации в цифровые вычислительные устройства обычно используется не сама десятичная система счисления, а двоично-десятичная, которая позволяет представить десятичные числа с использованием двоичных кодов. В этой форме каждая цифра десятичной записи числа изображается в виде четырехразрядного двоичного числа (двоичной тетрады). Таким образом, двоично-десятичная система счисления является как бы ограниченным до первых десяти символов вариантом шестнадцатеричной системы.
Например, чтобы представить десятичное число 174,8310 в двоично-десятичной форме необходимо, как и в случае с шестнадцатеричной системой счисления, каждый разряд десятичного числа перевести в четырехразрядный двоичный код: 110=00012, 710=01112, 410=01002, 810=10002, 310=00112. Окончательно число будет иметь вид 000101110100,100000112-10. В записи двоично-десятичного числа незначащие нули принято оставлять, поскольку оно всегда является формой представления десятичного числа и обрабатывается по группам из четырех разрядов. В связи с этим, нельзя путать двоично-десятичную форму записи числа с двоичной записью того же числа. В первом случае основание системы счисления остается равным десяти — только разрядные коэффициенты при основании выражены в двоичной форме. Для удобства в таблице 1.1 приведены различные формы записи двадцати чисел натурального ряда.
Таблица 1.1.
Десятичное число | Двоичное число | Восьмеричное число | Шестнадцате-ричное число | Двоично-десятичное число |
0 |
0 |
0 |
0 |
0000 |
1 |
1 |
1 |
1 |
0001 |
2 |
10 |
2 |
2 |
0010 |
3 |
11 |
3 |
3 |
0011 |
4 |
100 |
4 |
4 |
0100 |
5 |
101 |
5 |
5 |
0101 |
6 |
110 |
6 |
6 |
0110 |
7 |
111 |
7 |
7 |
0111 |
8 |
1000 |
10 |
8 |
1000 |
9 |
1001 |
11 |
9 |
1001 |
Продолжение таблицы 1.1.
Десятичное число | Двоичное число | Восьмеричное число | Шестнадцате-ричное число | Двоично-десятичное число |
10 |
1010 |
12 |
A |
00010000 |
11 |
1011 |
13 |
B |
00010001 |
12 |
1100 |
14 |
C |
00010010 |
13 |
1101 |
15 |
D |
00010011 |
14 |
1110 |
16 |
E |
00010100 |
15 |
1111 |
17 |
F |
00010101 |
16 |
10000 |
20 |
10 |
00010110 |
17 |
10001 |
21 |
11 |
00010111 |
18 |
10010 |
22 |
12 |
00011000 |
19 |
10011 |
23 |
13 |
00011001 |
20 |
10100 |
24 |
14 |
00100000 |