logo
Информатика_ЗО

Системы счисления и действия в них

Причины, по которым именно десятичная система оказалась общепринятой, совсем не математического характера. Десять пальцев рук - вот тот первоначальный аппарат для счета, которым человек пользовался, начиная с доисторических времен. По пальцам удобно считать от одного до десяти. Сосчитав до десяти, т.е. использовав до конца возможности нашего природного «счетного аппарата», естественно принять само число 10 за новую, более крупную единицу (единицу следующего разряда). Десять десятков составляют единицу третьего разряда и т. д. Таким образом, именно счет по пальцам рук положил начало той системе, которая кажется нам сейчас чем-то само собой разумеющимся.

Десятичная система счисления далеко не сразу заняла то господствующее положение, которое она имеет сейчас. В разные исторические периоды многие народы пользовались системами счисления, отличными от десятичной.

Несомненные остатки двенадцатеричной системы счисления имеются у англичан: и в системе мер (например, 1 фут=12 дюймам) и в денежной системе (1 шиллинг=12 пенсам)

С математической точки зрения, двенадцатеричная система имеет некоторые преимущества, по сравнению с десятичной, поскольку число 12 делится на 2, 3, 4 и 6, а число 10 только на 2 и 5. Больший запас делителей у числа, служащего основанием системы счисления, создает известные удобства в ее использовании.

Если мы производим вычисления вручную, то числа при этом пишутся карандашом или чернилами на бумаге. Для машины, однако, нужен какой-то иной способ фиксации тех чисел, с которыми она оперирует.

Все вычисления в цифровых вычислительных машинах производятся над конечными числами и с ограниченной точностью, определяемой разрядностью представления дискретных чисел. Цифровая информация, как правило, представляется при помощи электрических процессов, для которых характерны два состояния (например, включено/выключено, высокий/низкий уровень сигнала, ток есть/тока нет). Каждое такое состояние указывает на равенство значения двоичной переменной нулю или единице.

Для радиоэлектронных элементов (радиоламп, полупроводниковых элементов), которые в основном используются в вычислительных машинах, характерно наличие двух устойчивых состояний. Например, электронная лампа может быть «отперта» (тогда через нее идет ток) или «заперта» (ток через нее не проходит). По тому же принципу «да» или «нет» работают полупроводниковые элементы, которые сейчас уже полностью вытеснили радиолампы из вычислительной техники. Эти свойства радиоэлектронных элементов и служат основной причиной того, что именно двоичная система оказалась наиболее удобной для вычислительных машин.

Исходные данные для решения той или иной задачи даются обычно в общепринятой десятичной системе. Поэтому, чтобы машина, основанная на двоичной системе, могла обрабатывать эти данные, они должны быть переведены на «понятный» арифметическому устройству машины язык двоичного кода. Такой перевод легко, конечно, осуществлять и автоматически. Результаты машинного счета желательно иметь записанными снова в десятичной системе. Поэтому обычно в вычислительной машине бывает предусмотрен автоматический перевод результатов, полученных в двоичной системе, в десятичную систему.

Для оценки пригодности той или иной системы счисления в качестве основы для конструирования вычислительной машины имеет значение простота осуществления арифметических операций в ней.

Цифровой компьютер — это машина, которая может решать задачи, выполняя данные ей команды. Последовательность команд, описывающих решение определенной задачи, называется программой. Электронные схемы каждого компьютера могут распознавать и выполнять ограниченный набор простых команд. Все программы перед выполнением должны быть превращены в последовательность таких команд, которые обычно не сложнее чем:

сложить 2 числа;

проверить, не является ли число нулем;

скопировать фрагмент данных из одной части памяти компьютера в другую;

операция умножения чисел выполняется комбинацией операций сложения и сдвига (аналогично привычному умножению «в столбик»).

Такие примитивные команды в совокупности составляют язык, на котором люди могут общаться с компьютером. Такой язык называется машинным языком(или языком низкого уровня). Разработчик при создании нового компьютера должен решать, какие команды включить в машинный язык этого компьютера. Это зависит от назначения компьютера, от того, какие задачи он должен выполнять. Обычно стараются сделать машинные команды как можно проще, чтобы избежать сложностей при конструировании компьютера и снизить затраты на необходимую электронику. Так как большинство машинных языков очень примитивны, использовать их трудно и утомительно.

Алфавит Х из р символов и правила записи (изображения) и обработки чисел с помощью символов этого алфавита называются системой счисления(нумерацией) с основанием р. Число х всистемес основанием р обозначается как (х)рили хр.

Любая системасчисления– этосистемакодирования числовых величин (количеств), позволяющая выполнять операции кодирования и декодирования, то есть по любой количественной величине однозначно находить его кодовое представление и по любой кодовой записи – восстанавливать соответствующую ей числовую величину.

Все системысчислениястроятся по общему принципу: определяется величина р – основаниесистемы, а любое число х записывается в виде комбинации степеней веса р от 0-й до n-й степени следующим образом:

(x)10 = xnpn+ xn–1pn–1+ ... + x1p1+ x0p0 .

Наиболее используемые в информатике системысчисления, кроме, естественно, десятичной, – это: 1) двоичная, над алфавитом Х = {0,1}; 2) восьмеричная, над Х = {0, 1, 2, 3, 4, 5, 6, 7}; 3) шестнадцатеричная, над Х = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F}, где символы А, В, С, D, Е, F имеют, соответственно, десятичные веса 10, 11, 12, 13, 14, 15.

Пример.11012 = 1 * 23+ 1 * 22 + 0 * 21+ 1 * 20= 8 + 4 + 1 = 1310 ,

1578 = 1 * 82+ 5 * 81+ 7 * 80= 64 + 40 + 7 = 11110 ,

A6F16 = 10 * 256 + 6 * 16 + 15 * 1 = 267110 .

В большинствесистемсчислениявес цифры (или символа алфавита) зависит от ее места в записи числа или слова. Такаясистема счисленияназывается позиционной ; в противном случаесистеманазываетсянепозиционной.

Пример.Непозиционная система– древняя римскаясистемазаписи чисел с алфавитом вида Х={I (1), V (5), Х (10), L (50), С (100), D (500), М (1000)}, где в скобках указаны веса символов (не зависящие от позиции символа). Примеры римских чисел (в скобках – обычные десятичные эквиваленты): III (3), IV (4), V (5), VI (6), IX (9), XI (11), DCL (650). Запись числа в этойсистемеполучается двусторонней конкатенацией, причем правая конкатенация ассоциируется с добавлением, а левая конкатенация – с убавлением (например, IV и VI). Поразрядное же выполнение арифметических операций не имеет места (например, XIV + IV не равно XVIII ).

Для изображения десятичных дробей используется подобная формула разложения по степеням основания.

Пример. 110,0012 = 1*22 + 1 * 21 + 0 * 20 + 0 * 2-1 + 0 * 2-2 + 1 * 2-3 = 6,12510;

A,B16 = A * 160 + B * 16-1 = 10 * 1 + 11 * 0,0625 = 10,687510 .

Процедура переводадесятичных чисел в р-нуюсистемусчисления:

перевести отдельно целую часть числа х, для чего последовательно делить сперва целую часть [х]10, а затем все частные (получаемые при делении) на р до тех пор, пока не получим в очередном частном число меньшее р; изображение [х]pполучается последовательным приписыванием к последнему частному остатков от деления – от последнего до первого;

перевести отдельно дробную часть (мантиссу) числа, то есть {x}10, для чего последовательно умножать сперва исходную мантиссу, а затем мантиссы получаемых чисел на р до тех пор, пока не получим мантиссу, равную нулю, или нужное количество цифр в {х}p; изображение {х}pполучается приписыванием к целой части первого произведения второй такой же цифры и т.д., до последней цифры целой части;

результат будет иметь вид (х)р= [х]p, {х}p.

Пример.Найти: 12,810 = ?2 . Решение:

Переводим целую часть: 1210=11002;

переводим дробную часть: 0,8 *x 2 = 1,6; 0,6 *x 2 = 1,2; 0,2 *x 2 = 0,4; 0,4 *x 2 = 0,8; 0,810 = 0,1100110...2 ;

результат перевода: 12,810 = 1100,1100110011...2 .

Пример.Найдем 29,2510 = ?8 . Решение имеет вид 1) 2910 = 358 ; 2) 0,2510 = 0,28 ; 3) 29,2510 = 35,28 .

Пример.Найдем 79,2610 = ?16 . Решение: 1) 7910 = 4F16 ; 2) 0,2610 = 0,4016 ; 3) 79,2610 = 4F,416 . Припереводедробной части мы ограничились нахождением двух значащих цифр после запятой, ибопереводточно сделать невозможно.

Для переводаиз 2-ной в 8-ную и наоборот, из 2-ной в 16-ную и наоборот, из 8-ной в 16-ную и обратно, используется таблица следующего вида:

ОСНОВАНИЕ СИСТЕМЫ

10

2

8

16

16(0-F)

0

0

000

0000

0

1

1

001

0001

1

2

010

0010

2

3

011

0011

3

4

100

0100

4

5

101

0101

5

6

110

0110

6

7

111

0111

7

8

1000

8

9

1001

9

10

1010

A

11

1011

B

12

1100

C

13

1101

D

14

1110

E

15

1111

F

При переводев 8-нуюсистемуили из нее необходимо группировать в тройки биты, а припереводев 16-ную или из нее – группировать их в четверки битов. Можно добавлять, если нужно, незначащие нули (слева от целой части и справа от мантиссы) или отбрасывать их.

Пример.Рассмотримпереводыв смешанныхсистемах.

Из 2-ной системыв 8-ную (двоично-восьмеричное изображение):

из 8-ной системыв 2–ную (восьмерично-двоичное изображение):

из 2-ной системыв 16-ную (двоично-шестнадцатеричное изображение):

из 16-ной системыв 2-ную (шестнадцатерично-двоичное изображение):

Сложение в двоичной системесчисленияосуществляется по правилам

0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 210= 102(единица идет в старший разряд).

Таблица вычитания в двоичной системесчисленияимеет вид

0 – 0 = 0, 1 – 0 = 1, 1 – 1 = 0, 0 – 1 = 10 – 1 = 1 (единицу забираем у старшего разряда).

Таблица умножения в двоичной системесчисленияимеет вид

0 * 0 = 0, 0 * 1 = 0, 1 * 0 = 0, 1 * 1 = 1.

Таблица деления в двоичной системесчисленияимеет вид

0 : 0 = не определено, 1 : 0 = не определено, 0 : 1 = 0, 1 : 1 = 1.

Обратным кодомчисла всистемес основанием р называется число в этойсистеме, получаемое заменой цифры, символа в каждом разряде числа на его дополнение до максимальной цифры всистеме(то есть до р – 1).

Дополнительный код=обратный код+ единица в младшем разряде.

Пример.

10011 двоичное число,

01100 обратный кодэтого двоичного числа,

01101 дополнительный кодэтого двоичного числа;

457 восьмеричное число,

321 дополнительный код;

А9 шестнадцатеричное число,

57 дополнительный код.

Вычитание с помощью дополнительного кода: найтидополнительный кодвычитаемого такой же разрядности, как и уменьшаемое, и сложить этот код с уменьшаемым. Результатом вычитания будет полученная сумма без учета старшего разряда (отбрасывается).

Пример.Выполним вычитание напрямую и через сложение (черездополнительный код):