Перед полученным числом поставим знак «-» Ответ: -105

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

 

4.2. Арифметические действия над целыми числами

 

Рассмотрим кратко вопрос о выполнении арифметических действий над целыми числами. При сложении чисел А и В имеют место четыре основных случая:

1. А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например:
0 0000011 (А=3) + 0 0000111 (В=7) = 0 0001010 (10)10

Получен правильный результат

2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например: 3+(-10)=-7 ® 0 0000011 (прямой код) + 1 1110101 (обратный код числа

-10) = 1 1111000 (обратный код числа -7)
Получен правильный результат в обратном коде. При переводе в прямой код биты цифровой части результата инвертируются: 1 0000111 = –710.

3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например: 10+(-3)=7 ® 0 0001010 (прямой код) + 1 1111100 (обратный код числа

-3) = 1 0000110 Компьютер исправляет полученный первоначально неправильный результат (6 вместо 7). Переносом единицы из знакового разряда в младший разряд суммы и выдает правильный результат 7.

4. А и В отрицательные. Например: (-3)+(-7)=-10 ® 1 1111100 (обратный код -3) + 1 1111000 (обратный код числа -7) = 1 1110100.
Полученный первоначально неправильный результат (обратный код числа –1110 вместо обратного кода числа –1010) компьютер исправляет переносом единицы из знакового разряда в младший разряд суммы. При переводе результата в прямой код биты цифровой части числа инвертируются: 1 0001010 = –1010.

Сложение целых чисел может быть организовано с использованием дополнительных кодов. Здесь также имеют место рассмотренные выше случаи:

1. А и В положительные. Здесь нет отличий от случая 1, рассмотренного для обратного кода.

2. А положительное, B отрицательное и по абсолютной величине больше, чем А. Например: 3+(-10)=-7 ® 0 0000011 (прямой код) + 1 1110110 (дополнительный код числа -10) = 1 1111001 (дополнительный код числа -7)
Получен правильный результат в дополнительном коде. При переводе в прямой код биты цифровой части результата инвертируются и к младшему разряду прибавляется единица: 1 0000110 + 1 = 1 0000111 = –710.

3. А положительное, B отрицательное и по абсолютной величине меньше, чем А. Например: 10+(-3)=7 ® 0 0001010 (прямой код) + 1 1111101 (дополнительный код числа -3) = 0 0000111. Получен правильный результат. Единицу переноса из знакового разряда компьютер отбрасывает.

4. А и В отрицательные. Например: : (-3)+(-7)=-10 ® 1 1111101 (дополнительный код -3) + 1 1111001 (дополнительный код числа -7) = 1 1110110
Получен правильный результат в дополнительном коде. Единицу переноса из знакового разряда компьютер отбрасывает.

Сравнение рассмотренных форм кодирования целых чисел со знаком показывает:

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

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

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

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

Другой регистр АЛУ, участвующий в выполнении этой операции, вначале содержит множитель. Затем по мере выполнения сложений содержащееся в нем число уменьшается, пока не достигнет нулевого значения.

Деление для компьютера является трудной операцией. Обычно оно реализуется путем многократного прибавления к делимому дополнительного кода делителя.

 

 

4.3. Представление вещественных чисел в компьютере

 

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

В ПК числа могут быть представлены в одной из двух форм:

1) с фиксированной точкой – в естественной форме (0.00345 – правильная дробь, 1.23456 – неправильная дробь)

2) с плавающей точкой (запятой) (555,55 = 55555•10-2 = 0,55555•103)

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

А = m • qn,

где m – мантисса числа, q – основание системы счисления.,n – порядок числа.

Например, 0,55555•103 Чтобы привести к какому-то стандарту в представлении чисел с плавающей запятой условились представлять числа в нормализованной форме. При этом мантисса отвечает условию:

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

1/n £ | m | < 1

Например, 555,55 – естественная форма;

0,55555•103 - нормализованная форма (

0,55555 > 1/3 » 0,3333… и 0,55555 < 1).

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

Дробные числа занимают в памяти 4 байта (обычная точность) или 8 байтов (двойная точность).

Для записи таких чисел выделяются разряды для хранения:

§ знака мантиссы,

§ знака порядка,

§ порядка числа

§ мантиссы.

§

1-й байт 2-й байт 3-й байт 4-й байт
± порядок знак и мантисса

 

 

• в старшем бите 1-го байта хранится знак порядка числа ( 0 – плюc, 1 – минус);

• 7 бит 1-го байта содержат порядок;

• в следующих трех байтах, хранятся значащие цифры мантиссы и её знака
(24 разряда).

Машинный порядок.

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

 

± маш. порядок М АН Т И С С А
1-й байт 2-й байт 3-й байт 4-й байт

 

В старшем бите 1-го байта хранится знак числа: 0 обозначает плюс, 1 — минус. Оставшиеся 7 бит первого байта содержат машинный порядок. В следующих трех байтах хранятся зна­чащие цифры мантиссы (24 разряда).

В семи двоичных разрядах помещаются двоичные числа в диапазоне от 0000000 до 1111111. Значит, машинный порядок изменяется в диапазоне от 0 до 127 (в десятичной системе счисления). Всего 128 значений. Порядок (в математическом понимании), очевидно, может быть как положительным так и отрицательным. Разумно эти 128 значений разделить поровну между положительными и отрицательными значениями порядка: от -64 до 63.

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

Связь между машинным порядком (Мр)и математическим (р) в рассматриваемом случае выражается формулой: Мр = р + 64.

Полученная формула записана в десятичной системе. В дво­ичной системе формула имеет вид: Мр2 = р2 + 100 00002.

  • Внутреннее представление вещественного числа.

Алгоритм записи внутреннего представления вещественного числа:

1) перевести модуль данного числа в двоичную систему счис­ления с 24 значащими цифрами;

2) нормализовать двоичное число;

3) найти машинный порядок в двоичной системе счисления;

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

  • Формула для вычисления количества вещественных чисел, точно представимых в памяти компьютера: N = 2t х (U - L + 1) + 1.

Здесь t — количество дво­ичных разрядов мантиссы; U — максимальное значение мате­матического порядка; L — минимальное значение порядка.

Для рассмотренного нами варианта (t = 24, U = 63, L = - 64).Получается количество вещественных чисел, представимых в памяти компьютера с обычной точностью

N = 2 146 683 548.

Рассмотрим примеры.

1. Определить максимальное число и его точность для формата чисел обычной точности, если для хранения порядка и его знака отводится 8 разрядов, а для хранения мантиссы и ее знака 24 разряда.

Решение: Для формата чисел обычной точности выделяется 4 байт или 32 бит.

Знак и порядок знак и мантисса

Максимальное значение порядка числа составит 11111112 = 12710, и, следователь-но, максимальное значение числа составит:

2127 = 1,7014118346046923173168730371588×1038

Точность вычислений определяется количеством разрядов, отведенных для хранения мантиссы чисел. 32-8=24 бит на знак мантиссы и мантиссу. Максимальное значение положительной мантиссы равно:

223 - 1 ≈ 223 = 2(10 х 2,3) ≈ 10002,3 = 10(3 х 2,3) ≈ 107

Таким образом, максимальное значение чисел обычной точности с учетом возможной точности вычислений составит 1,701411×1038 (количество значащих цифр десятичного числа в данном случае ограничено 7 разрядами).

Ответ: 1,701411×1038

2. Определим максимальное число и его точность для формата чисел двойной точности, если для хранения порядка и его знака отводится 11 разрядов, а для хранения мантиссы и ее знака 53 разряда.

Решение:

Так как на хранение порядка и его знака отводится 11 разрядов, то на один порядок отводится 10 разрядов. Тогда максимальное значение порядка 11111111112 =102310

Следовательно, максимальное значение числа составит

21023 = 8,988465674311579538646525953945* 10307

 

 

Точность вычислений определяется количеством разрядов, отведенных для хранения мантиссы чисел.

Так как для хранения мантиссы и ее знака отводится 53 разряда, то на саму мантиссу отводится 52 знака и максимальное значение положительной мантиссы равно 252 –1 » 252 =2(10*5.2) » (210) 5,2 » 10005,2 =10(3*5,2) =1015,6

Максимальное значение числа двойной точности с учетом возможной точности вычислений составит 8,98846567431157 * 10307
(количество значащих цифр десятичного числа в данном случае ограничено 15-16 разрядами).

Ответ: 8,98846567431157 * 10307

3. Запишем внутреннее представление числа 250,1875 в форме с плавающей точкой.

Решение.

1) Переведем его в двоичную систему счисления с 24 зна­чащими цифрами:

250,187510 = 11111010, 00110000000000002.

2) Запишем в форме нормализованного двоичного числа с плавающей точкой:

0,111110100011000000000000 ´ 1021000.

Здесь мантисса, основание системы счисления (210 = 102) и порядок (810 = 10002) записаны в двоичной системе.

3) Вычислим машинный порядок в двоичной системе счис­ления: Мр2 = р2 + 100 00002.

Мр 2 = 1000 + 100 0000 = 100 1000.

4) Запишем представление числа в 4-х байтовой ячейке па­мяти с учетом знака числа:

 

Шестнадцатеричная форма: 48FA3000.

Ответ: внутреннее представление числа 250,1875 равно

01001000 11111010 00110000 00000000

Шестнадцатеричная форма: 48FA3000.

4. Минимальное значение математического порядка в десятич­ной системе счисления равно (-1024). Чему равно смещение?

Решение:

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

Связь между машинным порядком (Мр)и математическим (р) в рассматриваемом случае выражается формулой: Мр = р + 64, где 64- смещение для представления в 64 байтовой ячейке памяти. Если представить это на шкале, то имеем:

-64 0 63

В данной задаче Минимальное значение математического порядка в десятич­ной системе счисления равно (-1024).

На шкале это можно представить так:

-10240 1023

Легко видеть, смещение равно 1024. Ответ: 1024.

 

4.4. Арифметические операции с числами в формате с плавающей запятой.

 

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

Алгоритм сложения и вычитания чисел в формате с плавающей запятой:

1. Провести выравнивание порядков

2. Сложить или вычесть мантиссы.

3. Привести полученное число к стандартному формату с плавающей запятой путем нормализации.

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

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

· Алгоритм умножения чисел в формате с плавающей запятой:

1.Сложить порядки

2. Перемножить мантиссы

· Алгоритм деления чисел в формате с плавающей запятой:

1. Из порядка делимого вычесть порядок делителя

2. Мантиссу делимого делить на мантиссу делителя.

 

Рассмотрим несколько примеров.

1. Произвести сложение чисел 0,1×23 и 0,1×25 в формате с плавающей запятой.

Решение. Произведем выравнивание порядков и сложение мантисс:

0,1×23 = Х×25 , Х=(0,1×23)/ 25=0,1×2-2=0,001

0,001×25

+0,100×25

0,101×25 Ответ: 0,101×25

2. Произвести умножение чисел 0,1×23 и 0,1×25 в формате с плавающей запятой.

Решение: После умножения будет получено число 0,01×28, которое после нормализации примет вид 0,1×27. Ответ: 0,1×27.

3. Произвести сложение, вычитание, умножение и деление чисел 0,1×22 и 0,1×2-2 в формате с плавающей запятой.

Решение: Произведем выравнивание порядков и сложение мантисс:

0,1×2-2 = Х × 22 , Х = ( 0,1×2-2 )/ 22= 0,1×2-4 = 0,00001

0,10000 ×22

+0,00001 ×22

0,10001×25

Произведем вычитание мантисс и процедуру нормализации:

0,10000 ×22

- 0,00001 ×22

0,01111×22 = 0,1111×21

Используем алгоритм умножения: сложим порядки и перемножим мантиссы.

0,10000 ×22

х 0,00001 ×22

0,000001 ×24 , нормализуем ответ 0,1×2-1

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

0,10000 ×22

: 0,00001 ×22

10 000 ×20, нормализуем ответ 0,1×25

Ответ: 0,10001×25; 0,1111×21; 0,1×2-1 ; 0,1×25

Заключительные замечания

Чем больше разрядов отводится под запись мантиссы, тем выше точность представления числа. Чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.

Стандартные форматы представления вещественных чисел:

1) одинарный — 32-разрядное нормализованное число со знаком, 8-разрядным смещенным порядком и 24-разрядной мантиссой (старший бит мантиссы, всегда равный 1, не хранится в памяти, и размер поля, выделенного для хранения мантиссы, составляет только 23 разряда).

2) двойной — 64-разрядное нормализованное число со знаком, 11-разрядным смещенным порядком и 53-разрядной мантиссой (старший бит мантиссы не хранится, размер поля, выделенного для хранения мантиссы, составляет 52 разряда).

3) расширенный — 80-разрядное число со знаком, 15-разрядным смещенным порядком и 64-разрядной мантиссой. Позволяет хранить ненормализованные числа.

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

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

В качестве примера приведем характеристики форматов вещественных чисел, используемых в персональных компьютерах:

 

Форматы вещественных чисел Размер в байтах Примерный диапазон абсолютных значений Количество значащих десятичных цифр
Одинарный 10–45 … 1038 7 или 8
Вещественный 10–39 … 1038 11 или 12
Двойной 10–324 … 10308 15 или 16
Расширенный 10–4932 … 104932 19 или 20

 

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

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

§ чем больше разрядов занимает порядок, тем шире диапазон от наименьшего отличного от нуля числа до наибольшего числа, представимого в машине при заданном формате.








Дата добавления: 2015-11-18; просмотров: 1238;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.043 сек.