Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы информатики программирования и вычислительной математики. Ча

.pdf
Скачиваний:
26
Добавлен:
15.11.2022
Размер:
1.75 Mб
Скачать

Основные свойства дополнительных кодов:

1.Дополнительный код положительного числа – само число.

2.Преобразование дополнительного кода по приведенному алгоритму перевода приводит к первоначальному виду числа в знаковой форме.

2.1.4. Правила выполнения арифметических операций

Сложение. Операция сложения выполняется так же, как и в десятичной системе. Переполнение разряда приводит к появлению единицы в следующем разряде:

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

13 – 15 = 13 + (– 15).

Правила вычитания в двоичной системе. Алгоритм операции вычитания путем сложения дополнительных кодов:

1) преобразовать отрицательное число из формы со знаком в дополнительный код:

–1510 = 1000 1111→ 1110 000 + 1 → 111 0001 → 1111 0001;

2) выполнить операцию двоичного сложения над всеми разрядами, включая знаковый, игнорируя единицу переноса из самого высокого разряда:

;

41

elib.pstu.ru

3) при равенстве единице знакового разряда суммы, что означает получение отрицательного результата в форме дополнительного кода, необходимо перевести результат в знаковую форму, используя второе свойство дополнений:

1111 1110 → 000 0001 + 1 → 1000 0010 = – 210.

Таким образом, при выполнении операций сложения и вычитания арифметико-логическому устройству процессора приходится выполнять поразрядное сложение с переносом, инвертирование

ипроверку на знак двоичных чисел.

Втех случаях, когда необходимо произвести арифметические действия над числами больше 127, они размещаются уже не в одном, а в двух и более регистрах.

Усложнение работы в дополнительном коде заключается в том, что необходимо для его получения прибавлять единицу к инвертированному числу, т.е. к обратному коду этого числа.

Втабл. 2 приведены десятичные числа и их двоичные представления в различных формах (для упрощения взяты 4-разрядные числа). Интересным в этой таблице является то, что если начать

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

Таблица 2 Двоичное представление десятичного числа в различных кодах

Десятичное

Прямой код

Обратный код

Дополнитель-

число

ный код

 

 

–8

1000

–7

1111

1000

1001

 

 

 

 

–6

1110

1001

1010

–5

1101

1010

1011

42

elib.pstu.ru

 

 

 

Окончание табл. 2

 

 

 

 

Дополнитель-

 

 

Десятичное

Прямой код

Обратный код

 

 

число

 

ный код

 

 

 

 

 

 

 

–4

1100

1011

 

1100

 

 

–3

1011

1100

 

1101

 

 

–2

1010

1101

 

1110

 

 

–1

1001

1110

 

1111

 

 

0

1000

1111

 

0000

 

 

0000

0000

 

 

 

 

 

 

 

 

1

0001

0001

 

0001

 

 

2

0010

0010

 

0010

 

 

3

0011

0011

 

0011

 

 

4

0100

0100

 

0100

 

 

5

0101

0101

 

0101

 

 

6

0110

0110

 

0110

 

 

7

0111

0111

 

0111

 

 

Итак, числа, представленные в дополнительном коде, складываются по правилам двоичного сложения, но без учета каких-либо переносов за пределами старшего разряда.

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

Например, необходимо в десятичной системе умножить число 1510 на число 1310. Не пользуясь калькулятором, это можно сделать следующим способом: последовательно умножить множимое число (15) на единицы множителя (3), затем на его десятки (1), последовательно смещая результат умножения на одну позицию влево. После этого результаты умножения складываются:

43

elib.pstu.ru

Точно так же, пользуясь правилом умножения, приведенным выше, умножение можно выполнить в двоичной системе:

Проверка:

1510 · 1310 = 19510 = 110000112 = 1 · 27 + 1 · 26 + + 1 · 21 + 1 · 20 = 19510.

Деление. При выполнении операции деления несколько раз производится операция вычитания, поэтому предварительно следует найти дополнительный код делителя. Деление выполняется путем повторного вычитания и сдвига. Для примера выполним деление числа 195 на 15 или в двоичной системе 110000112 на 11112. Дополнительный код числа 1111 → 11110001. Поскольку по правилам деления каждое промежуточное делимое должно быть больше делителя, выбираем в качестве первого делимого число 11000 (которое больше 1111) и добавляем слева три нуля, дополняя делимое до 8 разрядов. Затем производим сложение его с дополнительным кодом делителя (выполняем операцию вычитания) и заносим в результат единицу. Если следующее делимое после сноса очередной цифры будет меньше делителя, то в результат заносится нуль и в делимое сносится еще одна цифра из исходного делимого.

В нашем случае число 10010 больше 1111, соответственно, вторая цифра – 1.

44

elib.pstu.ru

Делимое 111 на третьем шаге после сложения и сноски очередного разряда меньше делителя, поэтому записываем в результат 0 и сносим еще один разряд из оставшихся в делимом. После третьего шага результат сложения равен 0, деление закончено.

Ответ: 000011012 = 1310.

2.1.5.Использование восьмеричной

ишестнадцатеричной систем счисления

Двоичная система счисления неудобна для использования человеком, поэтому программисты используют восьмеричную (основание 8, используемые символы 0–7) и шестнадцатеричную (основание 16, используемые символы 0–9, A–F) системы (табл. 3).

Каждая тройка двоичных разрядов соответствует одной восьмеричной цифре, а каждая четверка – шестнадцатеричной. Отсюда следует простота преобразований из двоичной системы в восьмеричную и шестнадцатеричную системы счисления.

Например:

110100112 = 1101 00112 = D316, 110100112 = 011 010 0112 = 3238.

Если исходное количество бит не кратно 3 или 4, добавляются нули слева.

45

elib.pstu.ru

 

Позиционные системы счисления

Таблица 3

 

 

 

 

 

 

 

 

Десятичная

Двоичная

Восьмеричная

Шестнадцате-

ричная

 

 

 

 

 

0

0000

0

0

 

 

 

 

 

 

1

0001

1

1

 

 

 

 

 

 

2

0010

2

2

 

 

 

 

 

 

3

0011

3

3

 

 

 

 

 

 

4

0100

4

4

 

 

 

 

 

 

5

0101

5

5

 

 

 

 

 

 

6

0110

6

6

 

 

 

 

 

 

7

0111

7

7

 

 

 

 

 

 

8

1000

10

8

 

 

 

 

 

 

9

1001

11

9

 

 

 

 

 

 

10

1010

12

A

 

 

 

 

 

 

11

1011

13

B

 

 

 

 

 

 

12

1100

14

C

 

 

 

 

 

 

13

1101

15

D

 

 

 

 

 

 

14

1110

16

E

 

 

 

 

 

 

15

1111

17

F

 

 

 

 

 

 

16

10000

20

10

 

 

 

 

 

 

Обратное преобразование аналогично: B916 = 1011 10012, 2708 = 10 111 0002.

Перевод из десятичной системы в m-ричную систему счисления производится аналогично переводу в двоичную систему путем целочисленного деления десятичного числа на основание системы m до тех пор, пока частное не станет меньше основания. Так, перевод в 16ричнуюсистему осуществляетсяметодом, представленным нарис. 11.

46

elib.pstu.ru

а

б

Рис. 11. Перевод числа из десятичной системы счисления: а – в восьмеричную; б – шестнадцатеричную

Перевод из m-ричной системы в десятичную систему производится путем сложения произведений соответствующего десятичного эквивалента символа числавm-ричной системенавесi-го знакоместа.

Пример перевода из 16-ричной и 8-ричной систем счисления в десятичную систему:

15B16 = 1 · 162 + 5 · 161 + 11 · 160 = 256 + 80 + 11 = 34710, 751268 = 7 · 84 + 5 · 83 + 1 · 82 + 2 · 81 + 6 · 80 =

=28672 + 2560 + 64 + 16 + 6 = 3131810.

2.2.Представление текстовой информации

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

При двоичном кодировании текстовой информации каждому символу назначается код – последовательность из фиксированного количества нулей и единиц с взаимно однозначным соответствием. Используя одну двоичную цифру (один бит), можно закодировать всего 2 символа. Двухбитовых комбинаций может быть 4 → 00; 01, 10, 11, т.е. 22; с помощью трех битов можно получить восемь различных сочетаний нулей и единиц (23). Аналогичным образом можно подсчитать, что число би-

47

elib.pstu.ru

тов, необходимое для кодирования 32 различных символов, равно 5 (25). Этот код использовался в работе телеграфа в 20-е годы прошлого столетия, вместо знаков препинания ставились ТЧК (точка) и ЗПТ (запятая). Используя 7 бит, можно закодировать 128 символов (двоичный семибитовый код обмена информацией КОИ-7), ас помощью 24 бит – 16777216 различныхсимволовилисостояний.

Оптимальное количество символов, которые используются при наборе различных текстов, равно примерно 200 (буквы латинские и русские, заглавные и строчные, знаки препинания, цифры, математические знаки, элементы псевдографики). В двоичной системе такое количество символов может быть закодировано последовательностью из 8 бит (28 = 256), т.е. 1 байтом.

Кодировка IBM (ASCII коды American Standard Coding for Information Interchange) состоит из двух частей: нижняя является общепринятой во всем мире (десятичные коды 0–127). Некоторые из них приведены в таблице кодировке (рис. 12).

Первые 32 кода зарезервированы для различных управляющих символов, таких как «возврат каретки» (Enter), табуляция (Tab), отмена операции (Esc) и т.д.

Вторая – «верхняя половина» представляет собой расширенные ASCII коды, в ней находятся национальные алфавиты и специальные символы. В России вторая половина подчиняется 4 разным стандартам: КОИ-8 (код обмена информацией восьмизначный, или кодовая страница 866, полученная путем замены греческих букв и некоторых элементов псевдографики из таблиц ASCII кодов на буквы русского алфавита), кодировка Windows 1251, ISO, модифицированная альтернативная кодировка ГОСТ. В последней прописные буквы от «А» до «Я» имеют десятичные коды 128–159, строчные буквы от «а» до «п» имеют десятичные коды 160–175, от «р» до «я» – коды 224–241.

Помимо восьмиразрядной системы кодирования символьной (текстовой) информации разработана система шестнадцатиразрядного кодирования символов, которая получила название универсальной, UNICODE. Такая система позволяет закодировать 216 = = 65 536 различных символов, в том числе практически все алфавиты языков нашей планеты.

48

elib.pstu.ru

Рис. 12. Таблица кодировки КОИ-7

Расчет объема текстовой информации сводится к вычислению произведения количества символов в тексте на число разрядов двоичного кода, необходимого для кодирования одного символа.

2.3.Кодирование графической, звуковой

ивидеоинформации

Любую конфигурацию из точек и линий можно определить как

абстрактное математическое понятие, если не обращать внима-

ния на то, какими являются линии – прямыми или кривыми, длинными или короткими. Важно лишь то, что они соединяют две точки. Такое понятие получило название граф, оно было предложено в 1936 году венгерским математиком Д. Кенигом. Раньше применя-

49

elib.pstu.ru

лись понятия карты, схемы, лабиринта и др. Начало же современной теории графов заложил в 1937 году американец Пойа.

Каково же математическое определение графа? Пусть есть множество точек V. Тогда граф G = G (V) – некоторое множество упорядоченных пар E = <a, b>; a, b V, причем каждая пара указывает, какие элементы (точки) a и b соединены между собой. Такая пара называется ребром графа, а элементы a и b концевыми точ-

ками, или вершинами.

На схемах обычно вершины обозначаются маленькими кружочками, аребра– непрерывными прямымиили кривымилиниями (рис. 13).

Рис. 13. Вид графа

Существует несколько разновидностей графов. Для нас наиболее интересен тип графа, который имеет название дерево. У дерева каждое ребро имеет ориентацию, т.е. стрелку, показывающую, из какой вершины ребро выходит и в какую входит. Но особенностью его является то, что во все вершины, кроме одной, входит по одному ребру. Вершина, в которую не входят ребра, называется корнем дерева, а концевые вершины – листьями. Путь от корня к листьям называется ветвью. Обычно графическое дерево изображают корнем вверх.

Такие типы графов широко используются при анализе многих задач в электронике и программировании. Изменение уровней потенциалов в цифровых устройствах или вычислительный процесс могут быть представлены в виде дерева. Корень дерева соответст-

50

elib.pstu.ru