
инфа / Новый учебник информатики (3 поколение)
.pdf
21
|
|
|
2 |
m 1 |
|
m 2 |
|
i |
|
|
2 |
n 1 |
|
n 2 |
i |
|
|
, |
|
|
|
|
||||
|
|
|
|
|
|
2 a |
|
|
|
|
2 a |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
i 0 |
|
|
i |
|
|
|
|
|
i 0 |
|
i |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
2 |
m 1 |
|
m 2 |
i |
|
2 |
n 1 |
или 2 |
n 1 |
|
m 2 |
|
i |
|
|
2 |
m 1 |
, |
||||||||
|
|
2 a |
|
|
|
|
|
|
2 a |
|
||||||||||||||||
|
|
|
i n 1 |
|
i |
|
|
|
|
|
|
|
|
|
|
|
i n 1 |
|
|
i |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
n 2 |
m 2 |
2i a 1 |
m 2 |
|
|
m 2 |
|
|
|
|
m 2 |
|
|||||||||||||
1 |
2i |
|
|
|
|
|
2i , |
|
2i a |
|
|
|
2i . |
|||||||||||||
|
i 0 |
|
i n 1 |
i |
|
|
i 0 |
|
|
|
i n 1 |
|
i |
|
|
i n 1 |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Отсюда следует, что
am 1 aт 2 ... an an 1 1.
В каждом из приведенных соотношений соблюдается условие неизменности младших n–1 разрядов представления. Последнее соотношение справедливо только в том случае, когда коды во всех разрядах от n–1 до m–2 равны 1. Тем самым подтверждается справедливость сформулированного выше правила расширения знака.
5.3.3. Арифметические операции с целыми числами
Рассмотрим алгоритмы выполнения основных арифметических опе-раций над целыми числами, представленными в дополнительном коде.
Сложение и вычитание
Рассмотрим эти операции на примерах. Числа будем рассматривать как представляемые в 16-разрядной сетке (см. табл. 4).
В двух случаях (пятом и шестом) ограниченная разрядность чисел приводит к искажению не только величины, но и знака результата. Исправить положение можно, добавляя к результату (случай 5) или вычитая (случай 6) число 216 = 65536.
При выполнении сложения чисел с одинаковыми знаками результат может оказаться таким, что не вмещается в используемую разрядную сетку, т.е. получается число, которое выходит за диапазон представления – происходит переполнение. В этом случае на схему АЛУ возлагается функция выявить переполнение и выработать сигнал, который должен воспрепятствовать использованию в дальнейшем полученного ошибочного результата. Существует следующее правило обнаружения переполнения.
Если знаки слагаемых совпадают, то переполнение возникает в том и только в том случае, когда знак суммы, полученной по правилам сложения в дополнительном коде, отличается от знака слагаемых.

22
Т а б л и ц а 4
Арифметические операции над двоичными числами в дополнительном коде
Случай |
Слагаемые и результат |
Комментарий |
|
1 |
|
2 |
3 |
1 |
X>0, Y>0, X+Y <215 |
Результат корректный |
|
|
0 000 0110 0011 1010 X=+1594 |
|
|
|
+0 100 0100 1001 1011 |
Y=+17563 |
|
|
0 100 1010 1101 0101 |
Z=+19157 |
|
2 |
X>0, Y<0, |X|<|Y| |
|
Результат корректный |
|
0 000 0110 0011 1010 X= +1594 |
|
|
|
+0 100 0100 1001 1011 |
Y= –17563 |
|
|
1 100 0001 1001 1111 |
Z= – 15969 |
|
3 |
X>0, Y<0, |X|>|Y| |
|
Результат корректный. |
|
0 100 0100 1001 1011 |
Y= +17563 |
Перенос из старшего |
|
разряда не учитывается |
||
|
+1 111 1001 1100 0110 |
X= –1594 |
|
|
|
||
|
10 011 1110 0110 0001 |
Z= + 15969 |
|
|
|
|
|
1 |
2 |
|
3 |
4 |
X<0, Y<0, |X|+|Y| <215 |
|
Результат корректный. |
|
1 111 1001 1100 0110 |
X= –1594 |
Перенос из старшего |
|
разряда не учитывается |
||
|
+0 100 0100 1001 1011 |
Y= –17563 |
|
|
|
||
|
11 011 0101 0010 1011 |
Z= –19157 |
|
5 |
X>0, Y>0, X+Y >=215 |
|
При сложении положи- |
|
0 100 0100 1001 1011 |
X= +17563 |
тельных чисел получен |
|
отрицательный резуль- |
||
|
+0 100 1010 1101 0101 |
Y= +19157 |
|
|
тат – ПЕРЕПОЛНЕНИЕ |
||
|
1 000 1111 0111 0000 Z= – 28816 |
||
|
|
||
6 |
X<0, Y<0, |X|+|Y| >215 |
|
При сложении отрица- |
|
1 011 1011 0110 0101 |
X= – 17563 |
тельных чисел получен |
|
положительный резуль- |
||
|
+1 011 0101 0010 1011 |
Y= – 19157 |
|
|
тат – ПЕРЕПОЛНЕНИЕ |
||
|
10 111 0000 1001 0000 Z= – 28816 |
||
|
|
При выполнении сложения чисел с одинаковыми знаками результат может оказаться таким, что не вмещается в используемую разрядную сетку, т.е. получается число, которое выходит за диапазон представления – происходит переполнение. В этом случае на схему АЛУ возлагается функция выявить переполнение и выработать сигнал, который должен воспрепятствовать использованию в дальнейшем полученного ошибочного результата. Существует следующее правило обнаружения переполнения:

23
Если знаки слагаемых совпадают, то переполнение возникает в том и только в том случае, когда знак суммы, полученной по правилам сложения в дополнительном коде, отличается от знака слагаемых.
При выполнении операции вычитания поступают следующим образом.
Для вычитания одного числа (вычитаемого) из другого (уменьшаемого) необходимо предварительно получить дополнительный код для уменьшаемого, а затем сложить результат с уменьшаемым по правилам сложения в дополнительном коде.
5.3.4. Арифметические операции с вещественными числами
Любое вещественное число N, представляемое в системе счис-
ления с основанием p, можно представить в виде
N = ± M ∙ p±k,
где М – мантисса; k – порядок числа (целое число).
Например, десятичное число 234,47 можно представить следующим образом:
234,47 = 0,23447* 103.
А, скажем, двоичное число 1011, 01 запишется так:
1011,01 = 0,101101*24 = 0,101101*10100.
Здесь мы учли, что 210 = 102 и 410 = 1002.
Такое представление чисел называется представлением с плавающей точкой, где порядок определяет, на сколько порядков необходимо осуществить сдвиг относительно запятой. Когда плавающая запятая размещена в мантиссе перед первой значащей цифрой (как в нашем случае записано в правой части: 0,23447* 103 или 0,101101*10100), то такая форма записи называется нормализованной.
В компьютере для работы с порядками чисел используется смещенный код. Суть его в том, что если на порядок отводится разрядная сетка в n разрядов, то смещенный порядок 2n–1 + p. Например, если для порядка отводится 8 разрядов, то 2n–1 = 128. Порядок при n = 8 будет принимать значения от –128 до 128. В итоге значения порядка в смещенном коде будут от 0 до 255. Это позволяет работать с порядками как с целыми без знака.
Вещественные числа в компьютере представляются в таком ви-
де:

24
Здесь m – задает точность представления мантиссы. Например, если на вещественное число отводится четыре байта (или 32 разряда), то имеем формат так называемого короткого вещественного. При этом на мантиссу отводятся разряды с 0-го по 22-й, смещенный порядок занимает с 23-го по 30-й разряд, а в 31-м (крайнем левом разряде) будет знак мантиссы (т.е. знак всего числа). Условились, что знак задается так: 1 (в 31-разряде) для отрицательных чисел и 0 – для положительных.
При алгебраическом сложении и вычитании чисел, представленных в формате с плавающей точкой, сначала уравниваются порядки слагаемых. В процессе выравнивания порядков мантисса числа с меньшим порядком сдвигается в своем регистре вправо на количество разрядов, равное разности порядков. В результате выравнивания порядков одноименные разряды чисел оказываются расположенными в соответствующих разрядах обоих регистров, после чего мантиссы складываются1. В случае необходимости полученный результат нормализуется путем сдвига мантиссы результата вправо. При каждом сдвиге вправо порядок результата увеличивается на единицу.
Пример. Представить в форме с плавающей точкой числа A = –314,15, B = 27,18 и выполнить операцию A+B.
Решение
Переведем эти числа в двоичную систему счисления (целая часть переводится методом деления на 2, дробная – методом умножения на 2):
A = – 100111010,00100110011001*20 = – 0,10011101000100110011001*29.
B = 11011,001011100001010001*20 = |
0,11011001011100001010001*25. |
Смещенный порядок числа A будет равен P*A = PA + N = 9 + 128 =13710 = = 1000 10012. Смещенный порядок числа B будет равен P*B = PB + N = 5+128 = =13310 = 1000 01012.
Запишем числа в заданном формате:
A: 1.10001001. 10011101000100110011001;
1 Операцию вычитания сведем к сложению с отрицательным числом. Напомним, что отрицательные числа представляются в дополнительном коде.

25
B: 0.10000101. 10000001110000101000111.
Для выполнения операции сложения необходимо выровнять порядки чисел, т.е. принять порядок меньшего числа (B) равным порядку большего числа (A), уменьшив мантиссу меньшего числа путем сдвига вправо на число разрядов, равное разности порядков чисел (PA – PB =4) :
B: 0.10001001.000010000001110000101000111.
Мантиссу отрицательного числа MB представляем в дополнительном коде, положительного MA – в прямом. Тогда
MA = |
1.01100010111011001100111 |
|
+ |
|
|
MB |
= |
0.00001101100101110000101 |
MA + MB =1.01110000100000111101100.
Результат отрицательный (в знаковом разряде стоит единица), мантисса нормализованная. Запишем результат с учетом порядка в разрядной сетке заданного формата:
A+B : 1.10001001. 01110000100000111101100.
Учтем, что т.к. результат отрицательный, то мантисса записана в дополнительном коде. Преобразуем из дополнительного в прямой (вычтем единицу и инвертируем цифры):
MA + MB = – 0.10001111011111000010100.
Проверка:
Рассчитаем порядок. 10001001 = 27 +23 + 20 = 128 +8 + 1 = 13710. Или с учетом смещения 137 – 128 = 9.
Тогда, т.к. мантисса имеет вид: – 0.10001111011111000010100, то с уче-
том порядка имеем: 100011110.11111000010100 (сдвинули десятичную точку на 9 позиций).
Значит, целая часть результата:
28 + 24 + 23 + 22 + 21 =256+16+8+4+2 = 286.
Дробная часть результата:
2–1 +2–2 + 2–3 + 2–4 + 2–5 = 0,96875 0,97.
Эти же числа сложим в десятичной системе:
–314,15+ 27,18 = –286,97.
Видим, что все верно.

26
Индивидуальные задания «Арифметические операции в двоичной системе»
Ниже предложены варианты заданий (см. таблицу). Каждое задание состоит из трех этапов:
А) Числа X и Y представлены в форме короткого целого. Вычислить
X+Y.
Б) Вычислить X – Y.
В) Числа A и B в формате короткого вещественного слова. Выполнить операцию A+B.
Номер |
|
|
Числа |
|
|
варианта |
X |
Y |
|
A |
B |
1 |
10236 |
–18758 |
|
724,71 |
–10,83 |
2 |
–3876 |
14932 |
|
116,03 |
–494,4 |
3 |
–19392 |
24076 |
|
–376,47 |
21,001 |
4 |
–13704 |
–23800 |
|
–19,865 |
119,1 |
5 |
–21005 |
12037 |
|
–275,5 |
24,75 |
6 |
876 |
–14731 |
|
325,11 |
–36,55 |
7 |
–734 |
18005 |
|
610,44 |
–3,175 |
8 |
16538 |
–11010 |
|
327,93 |
–1,172 |
9 |
–12709 |
25068 |
|
505,4 |
–26,43 |
10 |
–10736 |
19805 |
|
99,031 |
–17,666 |
11 |
10211 |
–18711 |
|
711,71 |
–11,83 |
12 |
–3812 |
14912 |
|
112,03 |
–412,4 |
13 |
–19313 |
24013 |
|
–313,47 |
13,001 |
14 |
–13714 |
–23814 |
|
–14,865 |
114,1 |
15 |
–21015 |
12015 |
|
–215,5 |
24,15 |
16 |
816 |
–14716 |
|
316,11 |
–36,16 |
17 |
–717 |
18017 |
|
610,17 |
–3,17 |
18 |
16518 |
–11018 |
|
327,18 |
–1,18 |
19 |
–12719 |
25019 |
|
505,19 |
–26,19 |
20 |
–10720 |
19820 |
|
99,02 |
–17,620 |
21 |
10221 |
–18721 |
|
724,21 |
–10,21 |
22 |
–3822 |
14922 |
|
116,22 |
–494,22 |
23 |
–19323 |
24023 |
|
–376,23 |
21,023 |
24 |
–13724 |
–23824 |
|
–19,824 |
119,24 |
25 |
–21025 |
12025 |
|
–275,25 |
24,25 |
Методические рекомендации
В формате короткого целого число состоит из 32 двоичных разрядов, их нумерация начинается с нуля, тогда крайний слева (31-й разряд) является знаковым (0 – плюс, 1 – минус).
Как показано ранее, для перевода десятичного числа в двоичную систему счисления целесообразно вначале перевести число в 16-ричную систему (мето-

27
дом деления), а затем в двоичную. Это упрощает процедуру перевода, так как для перевода из 16-ричной системы в двоичную достаточно записать каждую цифру 16-ричного числа в виде соответствующей двоичной тетрады (четырехзначного
двоичного числа). Кроме того, необходимо помнить, что положительные числа хранятся в памяти компьютера в прямом коде, а отрицательные – в дополнительном.
Этапы А и Б
Пример. Показать изображение чисел X=18730 и Y=–16273 в формате короткого целого и выполнить над ними действия X+Y и X–Y.
X =(18730)10 = (492A)16 =(100 1001 0010 1010)2.
Y= (–16273)10 = (–3F91)16 = (–11 1111 1001 0001)2.
Представим эти же числа в виде двоичных слов (заданного формата):
X2 =0000 0000 0000 0000 0100 1001 0010 1010 – прямой код.
Y2= 1111 1111 1111 1111 1100 0000 0110 1111 – дополнительный код.
При выполнении операций сложения операнды складываются в тех кодах, в которых они хранятся в памяти:
X = 0000 0000 0000 0000 0100 1001 0010 1010
+
Y = 1111 1111 1111 1111 1100 0000 0110 1111
X+Y = 0000 0000 0000 0000 0000 1001 1001 1001 или 1001 1001 1001.
Сделаем проверку: (X+Y)10 = (18730)10 + (–16273)10 = (2457)10.
А мы получили в двоичном виде: X+Y = (1001 1001 1001)2. Выполним
перевод в десятичную систему счисления:
X+Y = 1*211+1*28+1*27+1*24 + 1*23 + 1*20 = 2048 + 256 + 128 + 16 + 8 + 1 = 2457.
То есть все верно.
При выполнении операций вычитания знак второго операнда меняется на противоположный. Для этого необходимо инвертировать все разряды вычитаемого и к младшему разряду прибавить 1, после чего производить сложение операндов.
Код вычитаемого Y после указанного действия:
–Y = 0000 0000 0000 0000 0011 1111 1001 0001.
Тогда X = 0000 0000 0000 0000 0100 1001 0010 1010
+
–Y = 0000 0000 0000 0000 0011 1111 1001 0001
X – Y = 0000 0000 0000 0000 1000 1000 1011 1011 или
Результат получен в прямом коде: (X – Y)2 = (1000 1000 1011 1011)2.
Проверка:
(X – Y)10 =(18730)10 – (–16273)10 = (35003)10.
Нами же получено: (X – Y)2 = (1000 1000 1011 1011)2 =1*215 +1*211 + 1* 27 + 1*25 + 1*24 + 1*23 + 1*21 +1*20 = 32768+2048+128+32+16+8+2+1 = 35003, т.е.
все верно.

28
Этап В
Пример. Представить в форме с плавающей точкой числа A = 314,51, B= –16,22 и выполнить операцию A+B.
Переведем эти числа в двоичную систему счисления (целая часть переводится методом деления на 2, дробная – методом умножения на 2):
A= 100111010,10000010100011*20 = 0,10011101010000010100011*29;
B= –10000,001110000101000111*20 = –0,10000001110000101000111*25.
Смещенный порядок числа A будет равен
P*A = PA + N = 9 + 128 = 13710 = 1000 10012.
Смещенный порядок числа B будет равен
P*B = PB + N = 5 + 128 = 13310 = 1000 01012.
Запишем числа в заданном формате
A:0.10001001.10011101010000010100011,
B:1.10000101.10000001110000101000111.
Для выполнения операции сложения необходимо выровнять порядки чисел, т.е. принять порядок меньшего числа (B) равным порядку большего числа (A), уменьшив мантиссу меньшего числа путем сдвига вправо на число разрядов, равное разности порядков чисел (PA – PB =4):
B: 1.10001001.00001000000111000010100.
Мантиссу отрицательного числа MB представляем в дополнительном коде, положительного MA – в прямом. Тогда
MA = 0.10011101010000010100011
+
MB = 1.11110111111000111101100 MA + MB =0.10010101001001010001111.
Результат положительный (единица переноса из знакового разряда при использовании дополнительного кода отбрасывается), мантисса нормализованная. Запишем результат с учетом порядка в разрядной сетке заданного формата:
A+B : 0.10001001.10010101001001010001111
Проверка:
Рассчитаем порядок. 10001001 = 27 +23 + 20 = 128 +8 + 1 = 13710. Или с учетом смещения 137 – 128 = 9.
Тогда, т.к. мантисса имеет вид: 0.10010101001001010001111, то с учетом порядка имеем: 100101010.01001010001111 (сдвинули дес. точку на 9 позиций).
Значит, целая часть результата:
28 + 25 + 23 + 21 =256+32+8+2 = 298.
Дробная часть результата:
2–2 + 2–5 + 2–7 + 2–11 + 2–12 + 2–13 + 2–14 = 0,28997802734375 0,29.
Эти же числа сложим в десятичной системе:
314,51+ (–16,22) =298,29.
Видим, что все верно.

29
6. ЛОГИЧЕСКИЕ ОСНОВЫ ОРГАНИЗАЦИИ КОМПЬЮТЕРА
Как известно, информация в компьютере подвергается не только арифметической, но и логической обработке. Основу логических схем и устройств ЭВМ составляет специальный математический ап-
парат, называемый алгеброй логики или исчислением высказываний.
При этом под высказыванием понимается любое утверждение, о котором можно сказать, что оно истинно или ложно. Одно и то же высказывание не может быть одновременно истинным и ложным или не истинным и не ложным.
Если высказывание истинно, то считают, что его значение равно единице; если высказывание ложно, то считают, что его значение равно нулю. Таким образом, значение высказываний можно рассматривать как переменную величину, принимающую только два дискретных значения: 0 или 1. Это приводит к полному соответствию между логическими высказываниями в математической логике и двоичными цифрами в двоичной системе счисления, что позволяет описывать работу логических схем компьютера, проводить их анализ и синтез с помощью математического аппарата алгебры логики.
Иное название алгебры логики – булева алгебра.
Булева алгебра является основным математическим аппаратом, который широко используется при проектировании и анализе схем обработки двоичной информации в цифровых компьютерах и других цифровых устройствах. Данный раздел математики назван в честь английского мате-
матика Джорджа Буля (Georg Boole), из-
ложившего основные положения этой алгебры в своем трактате «Исследование законов мышления с помощью математических теорий логики и вероятностей», опубликованном в 1854 г.
В 1937 г. Клод Шеннон (Claude |
|
|
Shannon), в то время ассистент электротех- |
|
|
нического факультета МИТ (Массачуссет- |
|
|
ского института технологий), предположил, |
|
|
что алгебру Буля можно использовать для |
|
|
решения проблем проектирования релейных |
Рис. 1.6. Джордж Буль |
|
переключающих схем. |
||
(1815–1864) |

30
Предложенные Шенноном методы в дальнейшем были использованы при анализе и проектировании электронных цифровых схем. В компьютерной науке математический аппарат булевой алгебры применяется в двух областях:
•анализ – исследование поведения цифровых логических цепей;
•синтез – при проектировании цифровых устройств с помощью методов булевой алгебры отыскивается наиболее рациональный способ реализации заданной логической функции.
6.1.Основные логические операции
Как и любая другая, булева алгебра использует переменные и операции над ними. В данном случае переменные и операции являются логическими переменными и логическими операциями. Переменные могут принимать только два значения – ИСТИНА (1) и ЛОЖЬ (0). Базовые логические операции – конъюнкция (AND), дизъюнкция (OR) и инверсия (NOT), которые символически представляются знаками точки, плюса и надчеркиванием:
A AND B = A ●B
A OR B = A + B
NOT A = Ᾱ
Результатом операции AND будет 1 ( ИСТИНА) в том и только в том случае, если оба операнда имеют значение 1. Операция OR дает результат 1 в том случае, если любой из операндов (или оба вместе) имеют значение 1. Унарная операция NOT инвертирует значение операнда. При отсутствии скобок существует приоритет операции AND над операцией OR. При обозначении операции AND символ точки часто опускается, если это не порождает двусмысленного толкования. Выражения
A + B●C
A + BC
эквивалентны и означают, что нужно выполнить операцию AND над B и C, а затем – операцию OR над полученным результатом и переменной A.
В табл. 5 представлены базовые логические операции в форме таблиц истинности, т.е. перечислены значения результата операции при всех возможных комбинациях значений операндов. Помимо уже упомянутых операций AND, OR и NOT, в табл. 5 включены еще три часто используемые операции – XOR, NAND и NOR.