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

Учебники 80389

.pdf
Скачиваний:
7
Добавлен:
01.05.2022
Размер:
43.33 Mб
Скачать

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

Десятичная система счисления является позиционной, так как значе- ние каждой цифры зависит от ее места (позиции) в числе.

Римская система счисления является смешанной, так как значение каждой цифры частично зависит от ее места (позиции) в числе. Так, в числах: VII; VI; IV (V обозначает 5, а I обозначает 1). Но, с другой стороны, важно, как цифры расположены относительно друг друга:

VII = 5+1 + 1 = 7;

VI = 5 + 1 = 6;

IV = 5 - 1 = 4.

Основание системы счисления — количество (Р) различных цифр, используемых для изображения числа в позиционной системе счисления. Значения цифр лежат в пределах от 0 до Р- 1.

ЛюбоечислоN всистемесчислениясоснованиемРможнозаписатькак

N = a

m1

Pm1 +a

m2

Pm2 + ... +a

k

Pk + ... +a P1

+a

0

P0

+

 

 

 

1

 

 

 

 

 

+a1P1 +a2 P2 + ... +as Ps

 

 

 

.

Нижние индексы определяют местоположение цифры в числе (разряд):

положительные значения индексов — для целой части числа разрядов);

отрицательные значения — для дробной (s разрядов). Максимальное целое число, которое может быть представлено в т разрядах:

Nmax = Pm 1.

Минимальное число дробной части в s разрядах:

Nmin = Ps .

Имея в целой части числа т разрядов, а в дробной — s, можно записать Pm+S разных чисел.

Двоичная система счисления имеет основание Р=2 и использует для представления информации две цифры: 0 и 1.

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

Дробная часть десятичного числа преобразуется путем последовательного умножения на 2, дробная часть снова умножается на 2, пока в ре-

11

зультате, дробная часть не станет равной 0. Целые части от деления записываю с лева на право (рис. 2.2.).

19

2

 

 

 

24 23 22

21 20 =24 + 21 + 20 =16+2+1=19

 

0,375

18

9

2

 

 

 

 

 

 

 

 

 

 

 

 

×2

1

8

4

2

 

1 0 0 1 1

 

2

0

0,75

 

1

4

2

Суммируются степени соответствую-

 

×2

 

 

0

2

1

 

 

 

1

1,5

 

 

 

0

 

щие единице

 

0,5

1910 = 100112

 

2-1

2-2

2-3 = 2-2 + 2-3 =0,25+0,125=0,375

 

×2

 

1

1,0

 

 

 

 

 

0 , 0

1

1

 

0,011

 

 

 

 

 

 

 

Рис. 2.2. Преобразование десятичных чисел в двоичные числа

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

вита: A, B, C, D, E, F.

(10011)2

0

1

0

0

1

1

(23)8

(10011)2

0 0 0 1

0 0 1 1

(13)16

 

 

2

 

 

3

 

 

 

1

3

 

Разбивается с последней цифры по три разряда

Разбивается с последней цифры по четыре разряда

Рис. 2.3. Перевод двоичных чисел в восьмеричные и шестнадцатеричные числа

2.3. Представление чисел в ЭВМ

В ЭВМ применяются две формы представления чисел:

естественная форма, или форма с фиксированной запятой (точкой);

нормальная форма, или форма с плавающей запятой (точкой).

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

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

12

знак

0, если плюс

 

 

1, если минус

 

 

0

1- - -

- - - 31

фиксированная запятая

 

 

 

 

 

 

 

 

 

 

 

целая часть

 

 

0 1- - -

- - - 31

максимальное целое число

 

0 111 - - -

- - - 1

= 231-1 = 2147483647

Рис. 2.4. Представление двоичных чисел с фиксированной запятой

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

Впамяти ЭВМ числа с фиксированной точкой хранятся в трех форма-

тах (рис.2.5.):

 

младшие

Тетрады

старшие

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

 

 

 

 

 

Байт

 

 

 

 

 

 

0

7

8

 

 

15 16

 

23 24

31

 

Полуслово

 

 

 

Полуслово

 

 

 

 

 

 

Слово

 

 

 

 

0

31

32

 

 

63 64

 

 

n

 

Слово

 

 

Слово

 

 

 

 

 

 

Двойное слово

 

 

 

 

 

 

 

Поле максимальной длины ЭВМ

 

 

Рис. 2.5 Форматы представления данных в ЭВМ

 

а)

полуслово

 

16 бит, или 2 байта;

 

б)

слово

 

32 бита, или 4 байта;

 

в)

двойное слово — 64 бита, или 8 байтов.

 

С плавающей запятой (точкой) число изображается в виде двух групп цифр (рис.2.6):

мантисса;

порядок.

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

13

N = ±M P±r

знак

разряды

 

мантисса (24 бита)

порядка

 

0

1

7

8

31

 

 

 

 

 

 

плавающая запятая

Рис. 2.6. Представление двоичных чисел с плавающей запятой

где М — мантисса числа M < 1; r - порядок числа (целое число); Р - основание системы счисления.

19.37510 = 10011.0112 = 13.616 = (0.136000×102)16

положительное

порядок

мантисса 0.136000

число

+2

 

 

 

 

 

0 0000010 0001 0011

0110 0 - - -

- - - 0

Рис. 2.7. Пример представления двоичных чисел с плавающей запятой

Нормальная форма представления обеспечивает большой диапазон отображениячиселиявляетсяосновнойвсовременныхкомпьютерах(рис. 2.7.).

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

но, 0.5 < M < 1.

В памяти ЭВМ числа с плавающей запятой хранятся в двух форматах:

• слово — 32 бита, или 4 байта;

• двойное слово — 64 бита, или 8 байт.

2.4. Специальные коды представления чисел в ЭВМ

Для представления чисел с учетом их знака, в вычислительных машинах используются специальные коды:

прямой код числа;

обратный код;

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

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

Прямой код числа N (обозначим [N]пр).

Пусть число в двоичной системе счисления N= а1, а2, а3, ..., ат; тогда:

14

= 1, a1, a2 , a3 ,..., am ;

при N> 0, [N]np = 0, а1, а2, а3, ..., ат; при N<0, [N]np = 1, а1, а2, а3, ..., ат;

при N= 0 имеет место неоднозначность [0]пр = 0, 0 ... = 1,0 ...

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

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

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

Обратный код числа N, обозначим [N]обр

Инверсией числа a является его противоположное значение, если а=0 то a = 1, и если а=1 то a = 0.

Обратный код формируется следующим образом:

при N> 0, [N]обp = 0, a1, a2 , a3 ,..., am ; при N<0, [N]обp

при N= 0 имеет место неоднозначность [0]обр = 0, 00 ...0 = 1,11 .. 1. Для того чтобы получить обратный код отрицательного числа, необ-

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

Например,

для N = 1011, [N]обp = 0,1011; для N = -1011, [N]обp = 1,0100.

Дополнительный код числа N, обозначим [N]доп. формируется следующим образом:

при N ≥ 0, [N]обp = 0, a1, a2 , a3 ,..., am ;

при N ≤ 0, [N]обp = 1, a1, a2 , a3 ,..., am + 0,00...1.

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

Например,

для N = 1011, [N]доп = 0,1011;

для N = -1100, [N]доп =1,0011+0,0001= 1,0100.

15

для N = -0000, [N]доп = 10,0000 = 0,0000 (1 исчезает). Неоднозначно-

сти в изображении 0 нет.

Эмпирическое правило получения дополнительного кода отрицательного числа:

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

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

рое возникает при сложении чисел с одинаковыми знаками.

при N ≥ 0, [N]Мдоп = 00, a1, a2 , a3 ,..., am ;

при N ≤ 0, [N]Мдоп = 11, a1, a2 , a3 ,..., am + 0,00...1.

Наибольшее распространение в ЭВМ получили обратный и дополнительный модифицированный коды.

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

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

Действия над двоичными числами, используют следующие правила, заданные таблицами сложения, вычитания и умножения (таблица 2.1, 2.2.).

 

 

Таблица 2.1.

Сложение

Вычитание

Умножение

0 + 0 = 0

0 – 0 = 0

0 × 0 = 0

0 + 1 = 1

1 – 0 = 1

0 × 1 = 0

1 + 0 = 1

1 – 1 = 0

1 × 0 = 0

1 + 1 = 1 0

1 0 – 1 = 1

1 × 1 = 1

 

 

 

- стрелка показывает перенос единицы в старший разряд при сложении , и из старшего при вычитании

Сложение двух многоразрядных двоичных чисел производится поразрядно с учетом переноса единиц переполнения в старший разряд.

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

16

Умножение представляет собой многократное сложение промежуточных сумм и сдвиги.

Процесс деления состоит из повторяющихся операций вычитания.

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2.2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример

 

 

 

 

 

 

 

Сложение

Вычитание

 

Умножение

 

 

 

 

 

Деление

1 1

 

1

 

10011

 

101010 |111

 

1011

1010

 

19(10)

 

 

 

 

 

111

 

110

 

 

 

×

101

 

 

1011

 

0110

 

 

 

 

0111

(42:7=6)

 

 

 

5(10)

 

 

 

 

 

 

 

 

 

 

111

 

 

10110

0100

 

 

 

 

 

10011

 

0000

 

 

 

 

 

 

 

 

 

+ 00000 10011

1011111(2) =

95(10)

2.6. Выполнение арифметических операции в ЭВМ

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

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

Пример. Сложение двух чисел в обратном коде:

Числа

Обратный код

Сложение

x = -0,10101;

1,10101;

+ 1,01010

 

y = -0,00101;

1,11010;

 

1,11010

 

 

 

11,00100

 

 

 

|

1

 

[x + y]пр = 1,11010; [x + y]обр = 1,00101.

Пример : x – число положительное, по модулю большее отрицательного числа y.

17

Прямой код

Обратный код

Сложение

[x]пр = 0,10101;

0,10101;

+ 0,10101

[y]пр = 1,01001;

1,10110;

 

1,10110

 

 

10,01011

 

 

|

1

-------------------

x + y = 0,01100.

Проверка в десятичном коде эквивалентными целыми числами: x = + 21; y = - 9 ; x + y = +12 = 01100(2);

Пример : x – число отрицательное, по модулю большее, положительного числа y.

Прямой код

Обратный код

Сложение

[x]пр = 1,10101;

1,01010;

 

+ 1,01010

[y]пр = 0,01001;

0,01001;

 

0,01001

 

[x + y]пр = 1,01100;

[x + y]обр =

1,10011

 

Проверка: x = - 21;

y = + 9 ; x + y = - 12 ;

 

 

Следовательно, в ЭВМ осуществлены следующие основные микрооперации: 1) образован обратный код первого слагаемого; 2) образован обратный код второго слагаемого; 3) произведено поразрядное сложение; 4) учтена единица переполнения — циклический перенос; 5) полученная сумма преобразована в прямой код. Таким образом, потребовалось пять элементарных действий и преобразований для сложения двух отрицательных чисел.

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

Пример.

 

 

 

 

 

 

 

Прямой код

 

Сдвиг

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

[x]пр = 1,11010;

1,011010;

1,100110

 

[y]пр = 1,01100;

1,001100;

1,110100

 

 

 

 

 

 

1,011010

 

 

 

 

 

1

 

Сложение

 

1,011001;

1,100110

 

 

 

 

 

 

________ +1,110100

 

 

 

 

 

 

[x + y]доп = 11,011010;

[x + y]пр = 1,100110.

Проверка: х = -26;

у = -12; х + у = -38.

18

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

ВЭВМ выполняются следующие операций: 1) образуется дополнительный код первого слагаемого; 2) преобразуется второе слагаемое; 3) осуществляется поразрядное суммирование; 4) вычитается единица из младшего разряда суммы (в случае отрицательного результата); 5) производится обратное преобразование суммы чисел в прямой код. Не всегда используется весь набор операций; кроме того, перечисленные действия не отражают специфику работы узловых схем и устройств управления операций сложения.

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

Пример: N1 = -0,010011·10100; N2 = +0,001011·10+110.

Запись в ЭВМ:

Знак r Знак M

N1

=

0,

100

1,

010011;

N2

=

0,

110

0,

001011.

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

N2

=

0,

100

0,

101100;

N1

=

0,

100

1,

010011.

Суммируем мантиссы чисел в дополнительном коде:

 

Мантиссы

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

Сложение

 

M2 =0,101100

0,101100;

0,101100,

+

 

+

 

M

1= 1,010011

1,101101;

1,101101

M1 + M

2 =0,011001

 

0,011001

Результат N1 + N2 = 0,100 0,011001 сдвиг N1 + N2 = 0,011 0,11001.

19

Сдвигом влево мантиссы суммы на один разряд проведена нормализация, а следовательно, порядок уменьшен на единицу.

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

а)

x = 1011(2) = 11(10)

б)

 

1011

 

 

 

 

× y = 0101(2) = 5(10)

 

 

× 0101

 

 

 

 

Σ1 = 1011

 

Σ1 = 0000

 

0000

 

 

 

1011

 

 

 

 

Σ2 = 01011

 

Σ2

= 01011

 

 

 

 

1011

 

 

 

0000

 

 

 

Σ3 = 110111

 

Σ3

= 010110

 

 

 

0000

 

 

 

 

1011

 

 

Σ4 = 0110111(2) = 55(10)

 

Σ4 = 0110111(2) = 55(10)

Независимо от способа организации умножения полученная промежуточная сумма Σi каждый раз суммируется со сдвинутым на один разряд множителем.

ВЭВМ с плавающей запятой произведение двух чисел будет

Π= M1M 2 qr1 +r2 , так как N1 = M1 qr1 , N2 = M 2 qr2

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

(+) (+) =(+) ;

0 + 0 = 0 ;

(+) () =() ;

0 + 1 = 1 ;

() (+) =() ;

1 + 0 = 1 ;

() () =(+) ;

1 + 1 = 0 .

Затем находятся порядок произведения, путем суммирования порядков сомножителей и мантисса произведения — перемножением мантисс сомножителей. Рассмотрим четыре операции на примере умножения чисел

N1 и N2:

20

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