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

книги из ГПНТБ / Сарингулян, Э. В. Арифметические и логические основы цифровых машин учеб. пособие

.pdf
Скачиваний:
24
Добавлен:
19.10.2023
Размер:
3.96 Mб
Скачать

2) применение двоичной системы счисления дает возмож­ ность достаточно просто реализовать арифметические и логи­ ческие операции. Это обстоятельство существенно упрощает функциональный состав машины.

В табл. 2.1 и 2.2 показано сложение и умножение двоичных цифр.

Т а б л и ц а 2.1

Таблица сложения

0 + 0 = 0

0 + 1 = 1

1 + 0 - 1

1 + 1 = 1 0

Т а б л и ц а 2.2

Таблица умножения

0 x 0

= 0

о X

г о

i x o - o

1 X 1

— 1

Арифметические операции над двоичными многоразряд­ ными числами выполняются аналогично операциям в десятич­ ной системе счисления (табл. 2.3).

 

 

 

 

 

Т а б л и ц а 2.3

Операции

Десятичная

система

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

 

,

19,61

 

.

101,101

Сложение

'

7,81

 

 

10

111

 

 

27,45

 

1000,100

 

 

37,16

 

 

1011,01

Вычитание

5,08

 

~

101,11

 

 

32,08

 

 

101 ,10

 

 

 

3,12

 

 

1001,11

Умножение

 

х

2,04

 

*

10,01

 

1

248

 

 

1001

11

 

 

 

 

 

^

624

 

+

100111

 

 

 

6,3648

 

10101,1111

 

 

204

12

 

1100

100

Деление

_

12

17

_

100

 

11

 

 

 

 

 

 

 

 

84

 

 

100

 

 

 

0

 

 

0

 

 

]0

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

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

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

Если представить в системе счисления с основанием q це­ лую часть числа N n (2.1) в виде [1]:

yv;,<7)== + (/v,;_ I. F - 4 - ^ , - 2 - ^ - 2+ • • • -f д ^ '+ л д , (2.2)

где k— основание новой системы, то при последовательном де­ лении приведенного выражения, записанного цифрами систе­ мы q, на основание k будут определяться остатки, которые представляют собой цифры целой части числа в новой системе счисления. Процесс продолжается до получения частного, рав­ ного нулю. Остатки Nj являются цифрами переведенного чис­ ла, причем остаток N „_, представляет собой старшую цифру.

Если представить в системе счисления с основанием q дробную часть числа Л/лр в виде

M § = ± ( N - r b - l + N - 2- k - * + ■ • • 4 - А ^ .А - " 1). (2.3)

то путем последовательного умножения дробной части исход­ ного числа и дробных частей получающихся произведений на основание новой системы счисления k будут найдены все целые части, которые являются цифрами дробной части взятого для перевода числа в системе k. Первая после умножения целая часть TV-j представляет собой первую цифру дробной части переведенного числа.

Рассмотрим примеры перевода чисел.

Пример 1. Перевести из десятичной системы счисления число Л^к» =249,17 в двоичную систему по изложенному выше алгоритму.

Представим целую и дробную части числа A'(i0):

Аф10) = 249;

N $ ,= 0,17.

11

Для перевода целой части числа Л^ш) выполним после­ довательное деление частных на основание двоичной системы,

принимая за первое частное Л/цо) исходное число.

2 остатки

249^10)

1

 

 

124

0

 

 

62

0

jV(io, = 249,

/V(u2) = 11111001

31

1

15

1

 

 

7

1

 

 

Э1

1 1

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

0,17

 

 

034

 

 

068

 

 

Х ___ 2_

 

 

136

 

Щ = 0,0010101

х ___2

Л$о) = 0,17

072

 

 

144

2

088

Км

176 и т. д.

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

249,17(io) -*■ 11111001,0010101(2).

Пример 2. Перевести из двоичной системы счисления число *Y(2) =dil01Oil 11,101001 в систему с основанием 10, пользуясь приведенными выше правилами.

12

Основание десятичной системы счисления в исходной систе­ ме имеет следующую запись 1010. Тогда при переводе целой части числа остатки от деления будут определены:

1 )

1 1 0 1 0 1 1 1 ( 2) :

1 0 1 0 (2)

=

1 0 1 0 1 ( 2 )

о с т а т о к 1 0 1 (2)

2 )

1 0 1 0 1 (2) :

1 0 1 0 (7)

=

1 0 ( 2)

о с т а т о к

1 (2) - у

3 )

1 0 ( 2, :

1 0 1 0 (2) =

0

о с т а т о к

1 0 ( 2) - * ■

 

Л$>) =

11010111,

 

Л'(им) =

215

Проанализируем результат: последовательного умножения при переводе дробной части:

1)

0,101001

2)

0,011010

Х

10Ю

 

Х _____ 1010

,

101001

 

1101

101001

 

1101

 

110,011010

 

100,000100

Значение первой целой части Л /_,= 110 является первой после запятой цифрой исходного числа в новой системе счисления, изображенной в системе с основанием 2.

110(2) 6(Ю).

Аналогичные рассуждения можно провести и для 'последую­ щих разрядов дробной части переведенного числа:

Л'_2= 100. 100(2) ->■4(10).

Т огда

Л$) = 0,101001

имеет десятичный эквивалент

Л'?1Ро; = 0,64.

Искомое число

А;(1Р) = 215,64.

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

Рассмотрим пример перевода числа из восьмеричной в двоичную и затем в десятичную систему счисления. Для второ предварительно приведем таблицу записи ряда чисел в систе­ мах с основаниями 10; 2; 8 (табл. 2.4).

13

 

 

Т а б л и ц а 2.4

Десятичные

Двоичные

Восьмеричные

числа

числа

числа

0

0

0

1

1

1

')

10

2

3

11

3

4

100

4

5

101

5

Г)

п о

6

7

111

7

8

1000

10

9

1001

11

10

1010

12

11

1011

13

12

1100

14

13

1101

15

14

1110

16

15

1111

17

16

10000

20

Восьмеричное число =273 перевести в двоичную си­ стему.

Основание двоичной системы имеет восьмеричную запись 2. При переводе будем последовательно делить /Vw на 2, поль­ зуясь правилами исходной оистемы.

2

остатки

 

2 / 3 (8>

1

 

 

 

135

1

 

56

0

 

27

1

273,8;- Ю11101 1гг;

13

1

 

5

1

 

2

0

 

1

1

 

14

Для получения десятичного эквивалента числа /фа; = 273 представим основание этой системы в восьмеричной записи: 10(io;-> 12(В;. Тогда в соответствии с правилами перевода

1)

273(8;

:

12(8j =

22f8j

остаток

7(В;- » - 7^0)> “

2)

22(8)

:

12;а; =

1(8)

остаток

Юдо -> Яц0).

3)1(8) : 12,8)== 0 остаток 1(8)Ч- 1,,^,

273(8) -*■ 187(Ю).

Для проверки переведем вычисленное десятичное число Т/оо) в двоичную систему счисления. При делении на основа­ ние 2 образуется полученный ранее двоичный эквивалент

2

остатки

 

87„0)

1

 

93

1

 

46

0

 

23

1

187,10, -> 10111011(2)

11

1

 

5

1

 

2

0

 

1

1

 

Для ввода исходных десятичных чисел в машину необхо­ димо их представить с помощью тех двухпозиционных элемен­ тов, на которых выполнены блоки и узлы машины. Эту задачу позволяет решить так называемая двоично-десятичная запись.

Чтобы изобразить десятичные цифры через двоичные раз­ ряды, необходимо выделить четыре разряда, имеющих веса 2°, 21, 22, 23. Тогда любая десятичная цифра может быть пред­ ставлена соответствующей двоичной тетрадой, например,

8(Ю) 1000(2), 3(Ю) —v 0011(2), 5(Ю) -> 0101(2) и т. д.

Двоично-десятичное кодирование состоит в замене каждой десятичной цифры числа определенной двоичной тетрадой. На­ пример, десятичное число 7V(io, =941,375 при двоично-десяглч- ном кодировании будет преобразовано следующим образом:

941,375,ю,-^ 100Г 0100

0001,

ООП 0111

0101,210)

9

4

1

3

7

5

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

0010 1000, 001_^ ОЮ^(2/1о)-> 28,35(,0).

2

8

3

§

15

Как видно, ни прямой, ни обратный перевод при двоичнодесятичном кодировании не связан с арифметическими опера­ циями. Эту особенность рассмотренной формы записи исполь­ зуют во внешних устройствах машины, где с помощью шифра­ торов в процессе набора исходных десятичных чисел последние изображаются обычно в виде системы пробивок, соответст­ вующей двоично-десятичному коду, на перфолентах или перфо­ картах. Затем устройства ввода преобразуют двоично-десятич­ ные коды в последовательность электрических сигналов для передачи их во внутренние устройства машины, где по специ­ альной программе осуществляется дальнейший перевод двоич­ но-десятичных кодов в двоичную систему счисления. И затем уже весь вычислительный процесс в ЭЦВМ реализуется по двоичной системе.

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

Например,

187(H), = Ы 0 2+ 8-10'+ 7-10°-> 0001 1000

0111 (2/ш, —

 

1

~~8

 

0001 101010+ 1000- 10101+

0111- 1010° -

- - 0001- 1100100 1000-1010 +

011Ы

-*

-V 1100100+ 1010000+111 ^

10111011(2).

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

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

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

Восьмеричная система счисления имеет основание 8, пред­ ставляющее целую степень основания 2(8=^23). Поэтому пере­ вод восьмеричного числа в двоичный эквивалент прост и со­

16

стоит в замене каждой восьмеричной цифры соответствующей двоичной триадой (три двоичных разряда).

Например,

725,31(8)-» 11Ю10101,

011001(a).

5

3 Г

Шифраторы внешних устройств

переводят восьмеричные

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

При обратном переводе двоичное число необходимо раз­

бить на триады с последующей

заменой их

восьмеричными

цифрами. Например, Л^2) =11010 110,

11101.

При переводе по­

лучим

 

 

 

1П 0Ю — 326,72(8).

11010110, 11101 (?) = 011 010 ПО,

<—

—»

~з ~9—

ПТ

~Т~ ~2~

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

§2.2. Формы представления чисел и их запись в машине

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

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

В ряде машин положение запятой в числах фиксируется пе­ ред некоторым определенным разрядом. Такая форма пред­ ставления чисел носит название естественной, а машины отно­ сятся к классу ЭЦВМ с фиксированной запятой. Преимущест­ венно запятая закрепляется перед первым старшим разрядом, т. е. все числа при расчете должны быть меньше единицы, что достигается соответствующим масштабированием исходных ве­ личин. Очевидно, что при конечном числе разрядов, которыми располагает машина, при реализации арифметических опера­ ций могут .получаться двоичные числа, по абсолютной величи­ не большие 0,111...11 или меньшие 0,000...01. Получение ре­ зультатов по модулю, больших или равных единице, приводит к переполнению разрядной сетки. В этом случае теряются старшие разряды чисел и результаты искажаются. Числа, по абсолютной величине меньшие 0,000...01, определяются как машинный нуль. При подготовке задачи к решению на машине с фиксированной запятой необходимо учитывать возможный

2 Э. В, Сарннгулан, Г. В, Смирнова

П7

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

На рис. 2.1 показано возможное распределение разрядов регистра числа в машинах с фиксированной запятой.

 

 

Sod цифровой дробной

Знаковый разряд

 

части числа

 

 

j L — ..

1 1 О

1

о

Рис :.i

Взнаковом разряде находится знак числа, при отрицатель­ ном значении используется код 1, при положительной величи­ не фиксируется код 0. В регистре (рис. 2.1) записано число —

0,101...01.

Вдругом классе цифровых машин положение запятой ука­ зывается для каждого числа — это машины с плавающей за­ пятой или с учетом порядков. Определение места запятой эк­

вивалентно представлению числа N через его дробную цифро­ вую часть Л;лр и порядок р.

N — 2Р•Л’4',

(2.4)

,-де Л’’4 — О, Л/_, Л’ . . ■ • • N. да. N-i — 1;

0.

Дробная часть N 4' называется мантиссой числа N. Обычно мантисса Л/дрпо модулю меньше единицы (j Л/лр |< 1) и имеет свой знак, соответствующий знаку числа.

Величина порядка р, представляющая целое число, опреде­ ляет положение запятой в мантиссе. Группа порядка р имеет свой знак, характеризующий направление движения запятой в числе. С изменением порядка запятая как бы «плавает» в изображении числа.

На рис. 2.2 показана возможная запись числа двумя груп­ пами: группой мантиссы Л/Др и группой порядка р ,в разрядной сетке машины.

18

В соответствии с записью Л'др ——0,100...11;

-г 10...I.

Рассмотренная форма изображения числа в машине называет­ ся нормальной. Если первая цифра мантиссы ЛА’ Р равна еди­

нице < Л ^ Р< lj, то представление числа N в этом случае

называется ненорм ализов аниым.

Врезультате арифметических операций с нормализованны­ ми числами может образоваться число в ненормализованной форме

Л/, — • /У,Лр,

где

=

О, Л/_, N-., . ■ ■ N..k N ^ k ,, . . • Л'_„,

и

 

N - 1=

• • - =N-k> N-(k Iи = '•

авто­

В этом случае нормализация в машине осуществляется

матически за счет сдвига разрядов Л //1’ на к единиц влево и

уменьшения порядка р на величину к, т. е. NХ—‘2Р ~k■

где

Д№ = 0, N-tk-i d

•••ЛДт . Нормализованное представ­

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

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

Некоторые ЭЦВМ могут (выполнять вычисления в нормаль­ ной или естественной форме, выбранной в зависимости от ха­ рактера задачи.

§ 2.3. Машинные коды

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

2*

19

Соседние файлы в папке книги из ГПНТБ