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

Inform

.pdf
Скачиваний:
12
Добавлен:
14.02.2015
Размер:
1.03 Mб
Скачать

21

Пример 5. При Р=2, n=10 и m=6 диапазон чисел простирается примерно от 10-19 до 1019. (Сравните примером 2.3).

Системы счисления, используемые при работе с ЭВМ.

В ВТ применяют позиционные СС с недесятичным основанием: двоичную, восьмеричную, шестнадцатеричную и др. Для обозначения используемой СС числа заключают в скобки и индексом указывают основание СС:

(15)10 ,(1011)2 ,(735)8 ,(1EA9F)16 .

Иногда скобки опускают и оставляют только индекс:

1510 ,10112 ,7358 ,1EA9F16 .

Есть еще один способ обозначения СС: при помощи латинских букв добавляемых после числа. Например,

15D; 1011 В; 735Q; 1EA9FH.

Двоичная система счисления.

Основание Р=2. Алфавит включает две двоичные цифры: 0, 1. Любое число

C= Cn Cn-1 …C1 C0 C-1 C-m

есть сумма степеней числа Р=2,

C= Cn 2n +Cn-1 2n-1 +…+C1 21 +C0 20 +C-1 2-1 +…+C-m 2-m (1.1) Пример 6. 101011,112 =1 25 + 0 24 + 1 23 + 0 22 +1 21 + 1 20 +1 2-1 + 1 2-2 =

= 32+8+2+1+0,5+0,25=43,7510.

Веса разрядов в двоичной системе счисления равны 1, 4, 8,16,... влево от запятой и

0,5; 0,25; 0,125; 0,625;... вправо от запятой.

Шестнадцатеричная и восьмеричная СС используются при составлении программ на языке машинных кодов для более короткой и удобной записи двоичных кодов — команд, данных, адресов и операндов.

Для изображения цифр, больших 9, в шестнадцатеричной системе счисления применяются латинские буквы A, B, C, D, E, F. Изображения первых шестнадцати чисел в десятичной, двоичной и шестнадцатеричной системах счисления приведены в таблице 1.

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

Пример 7. Десятичное число 9703 в двоично-десятичной системе выглядит так: 1001 0111 0000 0011.

Таблица 1

Системы счисления

Десятичная

Двоичная

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

Шестнадцатеричная

о

о

0

о

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

А

22

11

1011

13

В

12

1100

14

C

13

1101

15

D

14

1110

16

Е

15

1111

17

F

16

10000

20

10

17

10001

21

11

Двоичная арифметика

Преимущество двоичной системы счисления над десятичной с точки зрения ЦВМ состоит в следующем:

-требуются элементы с двумя устойчивыми состояниями;

-существенно упрощаются арифметические операции;

-оборудования требуется в 1,5 раза меньше;

-позволяет применить аппарат математической логики для анализа и синтеза схем. Недостатки двоичной системы счисления состоят в следующем:

-большая длина записи чисел;

-при вводе и выводе информации требуется перевод в десятичную систему счисления.

Рассмотрим, как выполняются основные действия в двоичной арифметике.

Сложение

Вычитание

Умножение Деление

0+0=0

0-0=0

0х0=0

0:1=0

0+1=1

1-0=1

0х1=0

1:1=1

1+0=1

1-1=0

1х0=0

 

1+1=10

10-1=1

1х1=1

 

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

При сложении единица переноса складывается с цифрами соседнего старшего разряда. При вычитании единица заёма старшего разряда дает две единицы в младшем соседнем разряде.

Пример 8.

1)

110111,01

55,25

2)

11011,10

27,5

 

+ 10011,10

+19,5

 

- 1101,01

-13,25

 

1001010,11

74,75

 

1110,01

14,25

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

Пример 9.

1011,1

 

 

х 101,01

 

 

10111

 

 

10111

- сдвинутое на 2 разряда влево множимое

10111

 

- сдвинутое на 4 разряда влево множимое

111100,011

 

 

23

Перевод чисел из одной системы счисления в другую

Задача перевода из одной системы счисления в другую часто встречается при программировании и особенно часто — при программировании на языке Ассемблера. Например, при определении адреса ячейки памяти, для получения двоичного или шестнадцатеричного эквивалента десятичного числа. Отдельные стандартные процедуры языков программирования Паскаль, Бейсик, HTML и Си требуют задания параметров в шестнадцатеричной СС. Отыскать неисправность в ЭВМ практически невозможно без представлений о двоичной СС.

Сначала рассмотрим перевод из двоичной системы счисления в шестнадцатеричную и наоборот. Это наиболее просто в связи с тем, что 16=24 .

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

Пример 10.

305,416 =0011 0000 0101,01002 =1100000101,012

Ещё пример: Перевести число 7D2.ЕН из шестнадцатеричной СС в двоичную СС.

Решение

Переводимое число Результат

Переводимое

 

число

Результат

1444442444443

144424443

(7

D

2.

E

)16 =(11111010010.111)2

 

0111

1101

0010

1110

 

 

 

Отмеченные крайние нули следует отбросить.

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

Пример 11.

1010111,11011012 =0101 0111,1101 10102 =57,DA16

Ещё пример: перевести число 10111110001.001В из двоичной СС в шестнадцатеричную СС. Решение.

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

Правило 3.

Задано число С, представленное в системе счисления с основанием S:

C = Cn Cn-1 …C1 C0 C-1 C-m

Нужно перевести его в h-систему, выполняя действия в новой системе счисления (в h-системе).

24

Для этого нужно представить его в виде суммы степеней S : C= Cn Sn +Cn-1 Sn-1 +…+C1 S1 +C0 S0 +C-1 S-1 +…+C-m S-m,

где основание S, коэффициенты c и номера разрядов i выражены в новой h-системе.

Все действия надо выполнять в h-системе.

Пример 12.

1) Перевести 2Е5,А16 в десятичную систему счисления: 2Е5,А16 =2 162 +14 161 +5 160 +10 16-1 =741,62510

2)Перевести 5210 в двоичную систему счисления: 5210=101 10101 +10 10100 =110010+10=1101002

3)Перевести 1101,101 в десятичную систему счисления: 1101,1012 = 1 23 +1 22 +0 21 +1 20 +1 2-1 +0 2-2+1 2-3 =13,62510

Этот способ удобен при S<h и особенно для ручного перевода в десятичную систему

счисления.

Рассмотрим перевод целого числа С (2.2) из S-системы в h-систему в арифметике S- системы счисления.

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

системе. (При S<h прежде, чем записать число, надо получившиеся остатки переписать в цифры h-системы).

Пример 13.

1) Перевести число 70 в двоичную систему счисления.

70 2

0 35 2

1 17 2

1 8 2

 

0 4 2

 

0 2 2

7010 =10001102

01

2)Перевести 10000000 в десятичную систему счисления

10000000 1010

- 1010

1100

1010

1100

- 1010

1

- 1010

10=210

1000=810

100000002 =12810

При переводе наиболее частой ошибкой является неверная запись результата. Запись двоичного числа следует начинать со старшего значащего разряда (СЗР), а заканчивать записью младшего значащего разряда (МЗР). Следует помнить, что при делении первым получается значение МЗР.

В ЭВМ с целью упрощения арифметических операций применяют специальные коды для представления чисел. При помощи этих кодов:

автоматически определяется знак результата;

операция вычитания сводится к арифметическому сложению кодов чисел;

упрощается операционная часть ЭВМ.

25

Прямой , обратный и дополнительный коды чисел

В ЭВМ используется прямой, обратный и дополнительный коды чисел. Знак “+” кодируется нулем (0), “-” - единицей (1), которые записываются в дополнительном старшем разряде - знаковом разряде.

1. Прямой двоичный код Рпр(х) — это такое представление двоичного числа х, при котором знак «плюс» кодируется нулем в старшем разряде числа, а знак «минус» — единицей. При этом старший разряд называется знаковым.

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

2. Обратный код Робр(х) получается из прямого кода по следующему правилу:

 

 

 

'

Pпр (x)

при x 0

 

0

 

P

(x) =

'

 

 

 

 

 

 

 

 

обр

 

 

(x)

при x 0

 

1 P

 

 

 

 

пр

 

 

 

Из приведенного выражения видно, что обратный код для положительных чисел совпадает с прямым кодом. Чтобы представить отрицательное двоичное число в обратном коде нужно оставить в знаковом разряде 1, во всех значащих разрядах заменить 1 на 0, а 0 на 1. Такая операция называется инвертированием и обозначается горизонтальной чертой над инвертируемым выражением.

3. Дополнительный код Рдоп(х) образуется следующим образом:

 

 

0

'

Pпр (x)

при x 0

 

 

 

P

(x) =

'

 

 

 

 

 

 

 

 

 

 

доп

 

 

(x) +1

при x 0

 

1 P

 

 

 

пр

 

 

 

 

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

Дополнительный код может быть получен из обратного кода путём прибавления 1 к младшему разряду обратного кода (естественно, с учётом переносов между разрядами).

Итак:

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

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

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

Пример 14: Получить обратный код для числа х=-13D.

Решение.

Pпр(x) = (1'1101)2 прямой код

Pобр(x) = (1'0010)2 обратный код

Рдоп(x) = (1'0011)2 дополнительный код

26

Нетрудно доказать, что (по модулю):

Обратный код от обратного кода дает прямой код числа.

Дополнительный код от дополнительного кода дает прямой код числа.

Сложение чисел в прямом и дополнительном коде

Можно строго математически доказать следующие правила.

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

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

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

Пример 14.

1)

X=0,0101,

Y=-0,0011

 

Xдоп=0,0101, Yдоп=1,1101

 

Xдоп + Yдоп= 0,0101

 

+1,1101

3)

A=+0,10111,

B=-0,01010

 

Aобр =0,10111,

Bобр=1,10101

Aобр + Bобр= 0,10111 +1,10101

10,01100

1 (циклический

Пример 15. Выполнить алгебраическое сложение с использованием дополнительного кода для чисел X1 = 7D и X2 = -3D.

Решение.

Необходимо найти сумму: у = X1 +X2.

Учитывая, что X1 > 0, это число нужно представить в прямом коде, а так как X2< 0, то X2 нужно перевести в дополнительный код.

Так как результат положителен (в знаковом разряде Р(у) - 0), значит, он представлен в прямом коде. После перевода двоичного числа в десятичную СС получим ответ: у = +4D.

Пример 16. Выполнить алгебраическое сложение с использованием дополнительного кода для чисел X1= 8D и X2 = -13D.

Необходимо найти сумму: у = X1 +X2.

Число X1 нужно представить в прямом коде, а X2 в дополнительном коде.

27

В знаковом разряде стоит единица и, значит, результат получен в дополнительном коде. Для перехода от дополнительного кода

Рдоп(y)=1'1011B

к прямому коду Рпр(у) необходимо выполнить следующие преобразования:

Робр(у) = Рдоп(у) - 1 = 1'1011B - 1 = 1'1010B,

Рпр(у) = Pобр ( y) =1'1010B =1'0101B

Переходя от двоичной СС к десятичной СС, получим ответ: y=-5D.

28

Варианты представления информации в ПК

Как уже упоминалось, вся информация (данные) представлена в виде двоичных кодов. Для удобства работы введены следующие термины, обозначающие совокупности двоичных разрядов (табл.2.2). Эти единицы обычно используются в качестве единиц измерения объемов информации, хранимой или обрабатываемой в ЭВМ.

Таблица 2.2. Двоичные совокупности

Количество

1

8

16

8*1024

8*10242

8*10243

8*10244

двоичных

разрядов в

 

 

 

 

 

 

 

группе

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Наименован

Б

Б

Пара-

Килобайт

Мегабайт

Гигабайт

Терабайт

ие единицы

и

а

граф

(Кбайт)

(Мбайт)

(Гбайт)

(Тбайт)

измерения

т

й

 

 

 

 

 

 

 

т

 

 

 

 

 

 

 

 

 

 

 

 

 

Восемь последовательных битов составляют байт. Как правило, код символа хранится в одном байте. Такие кодировки называются однобайтными. В одном байте можно закодировать значение одного символа из 256 возможных (28=256). Примером такой кодировки может служить код ASCII (American Code for Information Interchange –

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

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

В ПК могут обрабатываться поля постоянной и переменной длины.

Поля постоянной длины:

слово – 2 байта;

полуслово – 1 байт;

двойное слово – 4байта;

расширенное слово –8байт.

Числа с фиксированной запятой чаще всего имеют формат слова и полуслова, числа с плавающей точкой – формат двойного и расширенного слова.

Поля переменной длины могут иметь любой размер от 0 до 256 байт, но обязательно равный целому числу байтов.

Пример 2.15.

Структурно запись числа –19310=-110000012 в разрядной сетке ПК выглядит следующим образом.

Число с фиксированной запятой формата слово со знаком.

 

Знак

Абсолютная величина числа

 

 

 

 

 

 

 

 

 

N раз-

15

14

13

12

11

10

9

 

8

7

6

5

4

3

2

1

0

ряда

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Число

1

0

0

0

0

0

0

 

0

1

1

0

0

0

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

29

Информационно-логические основы построения ЭВМ

Основы алгебры логики

Для описания логики функционирования аппаратных и программных средств ЭВМ используется алгебра логики или, как ее часто называют, булева алгебра. Основоположником этого раздела математики был Дж.Буль.

Булева алгебра оперирует с логическими переменными, которые могут принимать только два значения: истина или ложь, обозначаемые соответственно 1 и 0.

Как ранее отмечалось, основной системой счисления ЭВМ является двоичная СС, в которой также используются только две цифры: 1 и 0. Таким образом, одни и те же цифровые устройства ЭВМ могут применяться для обработки как числовой информации в двоичной СС, так и логических переменных. Это обуславливает универсальность (однотипность) схемной реализации процесса обработки информации в ЭВМ.

Алгебра логики – это раздел математической логики, значения всех элементов которой определены в двухэлементном множестве: 0 или 1. Алгебра логики оперирует с логическими высказываниями.

Высказывание – это любое предложение, в отношении которого имеет смысл утверждение о его истинности или ложности. При этом считается, что высказывание удовлетворяет закону исключённого третьего, т.е. каждое высказывание или истинно, или ложно и не может быть одновременно и истинным, и ложным.

В алгебре логики все высказывания обозначают буквами: a, b, c и т.д. Простейшими операциями в алгебре логики являются операции логического

сложения (иначе, операция ИЛИ, операция дизъюнкции) и логического умножения

(иначе операция И, операция конъюнкции). Для обозначения операции логического сложения используют символы + или , а логического умножения – символы * или .

В алгебре логики вводится ещё одна операция – операция отрицания (иначе НЕ, операция инверсии), обозначаемая чертой над элементом.

По определению: a + a =1; a a = 0; 0 =1; 1 = 0.

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

Функция в алгебре логики – это алгебраическое выражение, содержащее элементы алгебры логики a, b, c …, связанные между собой операциями, определенными в этой алгебре.

Например, f (a,b,c) = a + a b c + a + c .

Правила выполнения операций в алгебре логики определяются рядом аксиом, теорем и следствий.

Перечислим законы алгебры логики:

• сочетательный (или ассоциативный)

(a +b) +c = a +(b +c); (a b) c = a (b c);

• переместительный (или коммутативный) a +b =b +a;

a b =b a;

• распределительный (или дистрибутивный)

a (b +c) = a b +a c; a +b c = a b +a c;

30

• двойственности (или де Моргана) a +b = a b;

a b = a +b;

двойного отрицания a = a

• поглощения

a + a +b = a; a (a +b) = a

склеивания a b + a b = a;

(a +b) (a +b) = a.

Программное управление ЭВМ

Структура и виды команд в ЭВМ

Решение задач на ЭВМ реализуется программным способом, т.е. путем выполнения последовательно во времени отдельных операций над информацией, предусмотренной алгоритмом решения задачи.

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

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

Машинная команда состоит из двух частей: операционной и адресной. Операционная часть команды – это группа разрядов в команде, предназначенная для

представления кода операции машины.

Адресная часть команды - это группа разрядов в команде, в которой записываются коды адреса (адресов) ячеек памяти машины или иных объектов, задействованных при выполнении команды.

По количеству адресов, записываемых в команде, команды делятся на безадресные, одно-, двух- и трехадресные.

Типовая структура трехадресной команды:

КОП

a1

a2

a3

 

 

 

 

КОП – код операции;

a1 и a2 – адреса ячеек (регистров), где расположены соответственно первое и второе числа, участвующие в операции;

a3 - адрес ячейки(регистра), куда следует поместить число, полученное в результате выполнения операции.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]