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

Танненбаум Е. Архітектура компютера [pdf]

.pdf
Скачиваний:
114
Добавлен:
02.05.2014
Размер:
5.59 Mб
Скачать

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

6 7 3

В системах со знаком и с дополнением до единицы есть два представления нуля +0 и -0. Такая ситуация нежелательна. В системе с дополнением до двух тако проблемы нет, поскольку здесь плюс нуль это всегда плюс нуль. Но зато в это системе есть другая особенность. Набор битов, состоящий из 1, за которой следу ют все нули, является дополнением самого себя. В результате ряд положительны и отрицательных чисел несимметричен — существует одно отрицательное числ без соответствующего ему положительного.

Мы считаем это проблемами, поскольку хотим иметь систему кодировки, в ко торой:

1.Существует только одно представление нуля.

2.Количество положительных чисел равно количеству отрицательных.

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

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

Ниже приведена таблица сложения для двоичных чисел (рис. А.6).

Первое слогаемое

0

0

 

 

 

1 1

Второе слогаемое

_±Р_

_ t l

 

_±2

 

_±1

Сумма

0

 

 

1

1

0

Перенос

0

 

0

0

 

1

Рис. А.6. Таблица сложения для двоичных чисел

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

674 Приложение А. Двоичные числа

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

Десятичные

Дополнение

Дополнение

числа

до единицы

ДОдвух

10

00001010

00001010

+ (-3)

11111100

11111101

+7

1 00000110

1I 00000111

 

 

Перенос 1

Отбрасывается

00000111

Рис. А.7. Сложение в системах с дополнением до единицы и с дополнением до дв

Вопросы и задания

1.Преобразуйте следующие числа в двоичные: 1984, 4000, 8192.

2.Преобразуйте двоичное число 1001101001 в десятичную, восьмерич шестнадцатеричную системы.

3.Какие из следующих цепочек символов являются шестнадцатеричным лами? BED, CAB, DEAD, DECADE, ACCEDED, BAG, DAD.

4.Выразите десятичное число 100 в системах счисления с основаниями от

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

6.Большинство людей с помощью пальцев на руках могут сосчитать Однако компьютерщики способны на большее. Представим, что к палец соответствует одному двоичному разряду. Пусть вытянутый означает 1, а загнутый — 0. До скольки мы можем сосчитать, использу цы обеих рук? А если рассматривать пальцы на руках и на ногах? П вим, что большой палец левой ноги — это знаковый бит для чисел с нением до двух. Сколько чисел можно выразить таким способом?

7.Выполните следующие вычисления над 8-битными числами с дополн до двух:

00101101 11111111 00000000 11110111

+01101111 +11111111 -11111111 -11110111 8. Выполните те же вычисления в системе с дополнением до единицы.

Вопросы и задания

6

в. Не произошло ли переполнения.

000

000

111

100

100

+001

+111

+110

+111

+100

10.Десятичные числа со знаком, состоящие из п разрядов, можно представи в га+1 разрядах без знака. Положительные числа содержат 0 в крайнем лев разряде. Отрицательные числа получаются путем вычитания каждого ра ряда из 9. Например, отрицательным числом от 014725 будет 985274. Так числа называются числами с дополнением до девяти. Они аналогичны дв ичным числам с дополнениемдо единицы. Выразите следующие числа в ви 3-разрядных чисел в системе с дополнением до девяти: 6, -2, 100, -14, -1,

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

0001

0001

9997

9241

+9999

+9998

+9996

+0802

12.Система с дополнением до десяти аналогична системе с дополнением до дв Отрицательное число в системе с дополнением до десяти получается пут прибавления 1 к соответствующему числу с дополнением до девяти без уч та переноса. По какому правилу происходит сложение в системе с дополн нием до десяти?

13.Составьте таблицы умножения для чисел системы счисления с основанием

14.Перемножьте двоичные числа 0111 и ООН.

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

16.Напишите программу, которая на входе получает 2 цепочки из 32 символ ASCII, содержащие нули и единицы. Каждая цепочка представляет 32-би ное двоичное число в системе с дополнением до двух. На выходе програм должна выдавать их сумму в виде цепочки из 32 символов ASCII, содерж щей нули и единицы.

Приложение Б

Числа с плавающей точкой

Диапазон чисел, используемых при различных вычислениях, очень велик. мер, в астрономические вычисления может включаться масса электрона граммов) и масса Солнца (2x1033 граммов). Диапазон чисел здесь превыша Эти числа можно представить следующим образом:

0000000000000000000000000000000000.000000000000000000000000000

2000000000000000000000000000000000.000000000000000000000000000

При всех вычислениях должны сохраняться 34 разряда слева от десят запятой и 28 разрядов справа от нее. Это даст 62 значимых разряда в резул На бинарном компьютере можно использовать арифметику с многократно ченной точностью, чтобы обеспечить достаточную значимость. Однако мы жем определить массу Солнца с точностью даже до пяти значимых разря говоря уже о 62. В действительности практически невозможно выполнить либо измерения с точностью до 62 знаков. Можно было бы хранить все пр точные результаты с точностью до 62 значимых разрядов, а перед выводом чательных результатов отбрасывать 50 или 60 разрядов, но процессор и тратили бы на это слишком много времени.

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

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

Числа можно выражать в следующей общепринятой экспоненциальной фо и=/хЮе

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

ставления называется представлением сплавающейточкой. Ниже приведен

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

6

Область значений определятся по числу разрядов в экспоненте, а точнос определяется по числу разрядов в мантиссе. Существует несколько способ представления того или иного числа, поэтому одна форма выбирается в качест стандартной. Чтобы изучить свойства такого способа представления, рассмо рим представление R с трехразрядной мантиссой со знаком в диапазоне 0,l<|f| и двухразрядной экспонентой со знаком. Эти числа находятся в диапазоне +0,100x10"" до +0,999х10+", то есть простираются почти на 199 значимых разр дов, хотя для записи числа требуется всего 5 разрядов и 2 знака.

Числа с плавающей точкой можно использовать для моделирования систем действительных чисел в математике, хотя здесь есть несколько существенн различий. На рис. Б.1 представлена ось действительных чисел. Она разбита

7областей:

1.Отрицательные числа меньше -0,999x10".

2.Отрицательные числа от -0,999x10" до -0,100x10"".

3.Отрицательные числа от -0,1ООх 10"" до нуля.

4.Нуль.

5.Положительные числа от 0 до 0,1ООх10"".

6.Положительные числа от 0,100x10"" до 0,999x10".

7.Положительные числа больше 0,999x10".

 

3

5

 

 

Отрицательная

Положительная

 

1

2 П 0 т е Р я значимости 4 потеря значимости g

у

 

 

/

Положительна

 

\

 

Нуль

 

/

Выражаемые

потеря

 

 

 

 

 

 

 

 

 

 

je

 

 

отрицательные числа

значимости

 

-\

1

 

 

1

h

 

-10"

-10'1 00

0

 

10"100

 

Рис. Б. 1. Ось действительных чисел разбита на 7 областей

Первое отличие действительных чисел от чисел с плавающей точкой, котор записываются тремя разрядами в мантиссе и двумя разрядами в экспоненте, с стоит в том, что последние нельзя использовать для записи чисел из областей 1 5 и 7. Если в результате арифметической операции получится число из области или 7 (например, 1060х1060=10120), то произойдет ошибка переполнения и резул тат будет неверным. Причина — ограничение области значений чисел в данно представлении. Точно так же нельзя выразить результат из области 3 или 5. Так ситуация называется ошибкой из-за потери значимости. Эта ошибка менее сер езна, чем ошибка переполнения, поскольку часто нуль является вполне удовл творительным приближением для чисел из областей 3 или 5. Остаток счета в бан

6 7 8 Приложение Б. Числа с плавающей точкой

тельными числами хну существует действительное число z=(x+y)/2. Де тельные числа формируют континуум.

Числа с плавающей точкой континуума не формируют. В двухзнаков тиразрядной системе можно выразить ровно 179100 положительных 179100 отрицательных чисел и 0 (который можно выразить разными спосо то есть всего 358201 чисел. Из бесконечного числа действительных чисе апазоне от -10+10° до +0,999x10" в этой системе можно выразить только число. На рис. Б.1 эти числа показаны точками. Результат вычислений быть и другим числом, даже если он находится в области 2 или 6. Нап результат деления числа +0,100x103 на 3 нельзя выразить точно в нашей с представления. Если полученное число нельзя выразить в используемой с представления, нужно брать ближайшее число, которое представимо в этой ме. Такой процесс называется округлением.

Промежутки между смежными числами, которые можно выразить в пред нии с плавающей запятой, во второй и шестой областях не постоянны. Пром между числами +0,998x10" и +0,999x10" гораздо больше промежутка между ми +0,998x10° и +0,999x10°. Однако если промежутки между числом и его с выразить как процентное отношение от этого числа, большой разницы в жутках не будет. Другими словами, относительная погрешность, полученн округлении, приблизительно равна и для малых, и для больших чисел.

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

вэтих областях. С увеличением числа разрядов в мантиссе увеличивается пло элементов и, следовательно, точность приближений. С увеличением коли разрядов в экспоненте размер областей 2 и 6 увеличивается за счет умень областей 1, 3, 5 и 7. В табл. Б.1 показаны приблизительные границы об для десятичных чисел с плавающей точкой с различным количеством ра

вмантиссе и экспоненте.

ТаблицаБ.1. Приблизительныеверхняяинижняяграницычиселсплавающей

Количество разрядов

Количество разрядов

Нижняя

Верхняя

в мантиссе

 

в экспоненте

граница

граница

3

1

 

ю-12

109

3

2

 

Ю-102

10"

3

3

 

Ю-1002

1Q999

3

4

 

ю-13

 

4

1

 

109

4

2

 

10-юз

10"

4

3

 

1 Q-1OO3

1Q999

4

4

 

Ю-'оооз

Ю9999

5

1

ю-'4

109

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

67

 

 

 

Вариант такого представления применяется в компьютерах. Основа возвед ния в степень — 2,4,8 или 16, но не 10. В этом случае мантисса состоит из цепочк двоичных, четверичных, восьмеричных и шестнадцатеричных разрядов. Если край ний левый разряд равен 0, все разряды можно сместить на один влево, а экспонен ту уменьшить на 1, не меняя при этом значения числа (исключение составляе ситуация потери значимости). Мантисса с ненулевым крайним левым разрядо называется нормализованной.

Нормализованные числа обычно предпочитаются ненормализованным, по скольку существует только одна нормализованная форма, а ненормализованны форм может быть много. Примеры нормализованных чисел с плавающей точко даны на рис. Б.2. для двух основ возведения в степень. В этих примерах показан 16-битная мантисса (включая знаковый бит) и 7-битная экспонента. Запятая н ходится слева от крайнего левого бита мантиссы и справа от экспоненты.

Пример 1: Основа возведения в степень2

к

 

 

 

 

 

2"2

2~*

2"6

2"8

2"1 0

2' 1 2

2'1 4

2"1 6

 

 

 

 

 

l l

 

 

 

2

 

2

 

2"5 | Z7\

2•э-9

2-

 

2"15

 

J

M

I

I

I

 

 

 

 

 

 

 

 

 

 

 

I

 

I

 

 

i g

 

0

1010100

 

 

0

0 0 0 0 0 0

0

0 0

0 1

1 0

1

1 = 2 2 0

(1x2"1 2 +1x2-1

о.

Знак Экспонента

 

 

 

 

 

 

 

 

 

 

 

 

+ 1„о-1б\ -лт?

 

1

+ со смещением

 

Мантисса: 1x2'1 2 +1x2"13

 

 

 

 

 

 

 

 

I

 

64(84-64=20)

 

 

 

 

+1x2^ +1x2-«

 

 

 

 

 

 

 

 

 

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

 

 

 

го

влево

на

11

битов

и

вычесть

 

11

 

из

экспоненты

 

 

 

 

Z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S j g

 

 

0

1 0 0 1 0 0 1

 

1

1 0 1

 

1 0 0

0

0

0

0 0

0

0 0

0 = 2

II

Знак Экспонента

 

М а н т и с с а :

1 X 2 - W 1 X

2 - 2

 

 

+ 1х2"5 ) = 432

 

 

5

+ со смещением

 

 

 

 

,

 

 

.

 

 

 

 

 

 

 

 

§•

 

 

73-64=9

 

 

 

 

+ 1 х 2

+ 1 х 2

 

 

 

 

 

 

 

 

 

х

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример2: Основа возведения встепень 16

 

 

 

 

 

Щ

 

 

 

16"1

 

16"2

 

16"3

 

16"4

 

 

 

 

 

 

 

|

 

 

 

 

/ \

 

/ \

 

 

/ \

 

 

5

3

 

 

 

gra

0

1000101

0000

1011

 

QOQQ

OQQQ

= 165

(1х 1 6 ^ В И б 4 ) = 432

q о"

Знак Экспонента

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

I*

+ со смещением

 

Мантисса: 1х16"3+Вх1 б"4

 

 

 

 

 

 

 

 

§•

 

 

69-64=5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

1

|

0

1000011

0001

1011

0000

0000

=163

(1x161+Вх16"

6 8 0 Приложение Б. Числа с плавающей точкой

СтандартIEEE754

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

Чтобы изменить эту ситуацию, в конце 70-х годов IEEE учредил комисс стандартизации арифметики с плавающей точкой. Целью было не только да можность переносить данные с одного компьютера на другой, но и обеспечи работчиков аппаратного обеспечения заведомо правильной моделью. В ре те получился стандарт IEEE 754 (IEEE, 1985). В настоящее время больш процессоров (в том числе Intel, SPARC и JVM) содержат команды с плав точкой, которые соответствуют этому стандарту. В отличие от многих стан которые представляли собой неудачные компромиссы и мало кого устраивал стандарт неплох, в большей степени благодаря тому, что его изначально р тывал один человек, профессор математики университета Беркли Вильям (William Kahan). Этот стандарт будет описан ниже.

Стандарт определяет три формата: с одинарной точностью (32 бита), с у ной точностью (64 бита) и с повышенной точностью (80 битов). Формат с шенной точностью предназначен для сокращения ошибок округления. Он няется главным образом в арифметических устройствах с плавающей т поэтому мы не будем о нем говорить. В форматах с одинарной и удвоенной стью применяется основание возведения в степень 2 для мантисс и смещенн понента. Форматы представлены на рис. Б.З.

Биты 1 8

23

 

Мантисса

Зн^к ^Экспонента

Биты 1 1 1

5 2

Экспонента

Мантисса

х

 

Знак

 

Рис. Б.З. Форматы для стандарта IEEE с плавающей точкой: одинарная точность (

удвоеннаяточность(б)

СтандартIEEE754 68

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

Нормализованная мантисса начинается с двоичной запятой, за которой следу 1 бит, а затем остаток мантиссы. Следуя практике, начатой с компьютера PDP-1 компьютерщики осознали, что 1 бит перед мантиссой сохранять не нужно, поскол ку можно просто предполагать, что он есть. Следовательно, стандарт определя мантиссу следующим образом. Она состоит из неявного бита, который всегда р вен 1, неявной двоичной запятой, за которыми идут 23 или 52 произвольных би Если все 23 или 52 бита мантиссы равны 0, то мантисса имеет значение 1,0. Ес все биты мантиссы равны 1, то числовое значение мантиссы немного меньше, ч 2,0. Во избежание путаницы в английском языке для обозначения комбинации неявного бита, неявной двоичной запятой и 23 или 52 явных битов вместо терм на «мантисса» (mantissa) используется термин significand. Все нормализованн числа имеют significand s в диапазоне l<s<2.

Числовые характеристики стандарта IEEE для чисел с плавающей точкой дан в табл. Б.2. В качестве примеров рассмотрим числа 0,5,1 и 1,5 в нормализованно формате с одинарной точностью. Они представлены шестнадцатеричными числ ми 3F000000, 3F800000 и 3FC00000 соответственно.

ТаблицаБ.2.ХарактеристикичиселсплавающейточкойстандартаIEEE

Параметр

Одинарная точность Удвоенная точность

Количествобитоввзнаке Количество битов в экспоненте Количествобитоввмантиссе Общеечислобитов Смещение экспоненты Область значений экспоненты

Самое маленькое нормализованное число Самоебольшоенормализованноечисло Диапазон десятичных дробей Самое маленькое ненормализованное число

1

1

8

11

23

52

32

64

Смещение (excess) 127

Смещение (excess) 10

От-126 до+127

от-1022до+1023

2-126

2-Ю22

=21 2 8

_21°24

= 1 0 - м д о 1 0 3 8

И О"308 до 103 0 8

=ю-4 5

«ю-3 2 4

Традиционные проблемы, связанные с числами с плавающей точкой, — ч делать с переполнением, потерей значимости и неинициализированными числ ми. Подход, используемый в стандарте IEEE, отчасти заимствован от машин CDC 6600. Помимо нормализованных чисел в стандарте предусмотрено еще 4 ти чисел (рис. Б.4).

Проблема возникает в том случае, если абсолютное значение (модуль) резул

тата меньше самого маленького нормализованного числа с плавающей точкой, к

682 Приложение Б. Числа с плавающей точкой

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

Нормализованное

±

0 < Ехр < Мах

Любой наборбитов

число

 

 

 

Ненормализованное

±

0

Любой нулевой набор битов

число

 

 

 

Нуль

±

0

0

Бесконечность

±

1 1 1...1

0

Не число

±

1 1 1...1

Любой нулевой набор битов

 

\

Знаковый бит

 

Рис. Б.4. Числовые типы стандарта IEEE

Самое маленькое нормализованное число с одинарной точностью соде в экспоненте и 0 в мантиссе и представляет 1,0х2~126. Самое большое не лизованное число содержит 0 в экспоненте и все единицы в мантиссе и пр ляет примерно 0,9999999х2~127, то есть почти то же самое число. Следует от что это число содержит только 23 бита значимости, а все нормализованны ла — 24 бита.

По мере уменьшения результата при дальнейших вычислениях экспоне прежнему остается равной 0, а первые несколько битов мантиссы превращ в нули, что сокращаетизначение, и числозначимыхбитов мантиссы. Самое м кое ненулевое ненормализованное содержит 1 в крайнем правом бите, а тальные биты равны 0. Экспонента представляет 2~127, а мантисса — 2 23, по значение равно 2~150. Такая схема предусматривает постепенное исчезновен чимых разрядов, а не перескакивает на 0, когда результат нельзя выразить нормализованного числа.

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

С переполнением нельзя справиться постепенно. Вместо этого существу циальное представление бесконечности: с экспонентой, содержащей все еди и мантиссой, равной 0. Это число можно использовать в качестве операнд подчиняется обычным математическим правилам для бесконечности. Нап бесконечность и любое число в сумме дают бесконечность. Конечное число лить на бесконечность равно 0. Любое конечное число, разделенное на 0, ст

Соседние файлы в предмете Аппаратное обеспечение ЭВМ, средств телекоммуникаций и сетей