Представление положительных и отрицательных чисел в ЭВМ, сведение операции вычитания к операции алгебраического сложения
Лекция I
Арифметические основы ЭВМ.
Непозиционные системы счисления:
1.V
2.VV
3.VVV
Используются крайне редко
Позиционные системы счисления:
Позиционные системы счисления – имеет значение положение цифры в коде.
D=dn-1qn-1+ dn-2qn-2 +…+ d0q0 +d-1q-1+d-2q-2+…d-mq-m (1)
q-основание системы счисления 2,8,10,16 остальные редко.
Di –конкретное значение в i разряде n-количество разрядов в целой части, m- в дробной.
Например, имеется число 56,2 в десятичной системе для в восьмеричной: 56,2 (8) = 5*81+6*80+2*8-1=46,25
ЭВМ оперирует с целыми и действительными числами. Действительные числа могут быть представлены в форме с фиксированной и «плавающей» запятой.
Числа с фиксированной точкой (запятой)
В случае с фиксированной запятой, положение запятой строго фиксируется. Например, оно может быть зафиксировано после младшего разряда, то динамический диапазон составит
1£|D|£(2n-1)
Такой динамический диапазон достаточно мал. Поэтому главный недостаток чисел с фиксированной точкой – малый динамический диапазон (достоинство – простота реализации). Однако недостаток весьма серьезный, поэтому устройства с фиксированной запятой используются редко, только в особых случаях (например, видео-сопроцессоры приставок PlayStation).
Понятия «фиксированная точка» и «фиксированная запятая» эквивалентны.
Числа с плавающей точкой (запятой)
|
|
Формат числа с плавающей запятой можно представить в виде
Число представляется в виде D=d±p,(±M),
, где р – целое число, называемое порядком числа, d- основание системы счисления, M–мантисса числа, обычно |M|<1, число у которого
1/d£M£1 называют нормализованным. Нормализация проводится, чтобы сохранить в разрядной сетки большее количество значащих цифр.
Например, число (238)10 =103*0,238=0,0238*104
(101101)2= 2110*0,101101= 2111*0,0101101
Подчеркнуты нормализованные числа.
Число нормализовано, когда |m|<1/q
Нормализация позволяет убрать лишние нули после запятой (учтя это в порядке), что рациональней использует разрядную сетку компьютера.
Действие с нормализованными числами требует определенных правил. Так, если нужно сложить числа с разными порядками, то в начале производится денормализация для числа с меньшим порядком; порядок этого числа увеличивается – чтобы порядки обоих чисел были одинаковы, при этом мантисса числа, подвергшегося денормализации сдвигается вправо на соответствующее число разрядов, эти разряды заполняются нулями. Затем для чисел с одинаковыми порядками производится сложение. Результат нормализуется и в таком виде хранится в ЭВМ.
Чтобы умножить два вещественных числа в нормализованной форме необходимо перемножить их мантиссы, сложить порядки, округлить и нормализовать полученное число.
|
|
Пример умножения в десятичной системе
151*10
(151)10 =103*0,151
(10)10 = 102*0,1
мантисса = 0,151*0,1=0,0151, порядок 3+2 =5
Результат: 105*0,0151. После нормализации: 104*0,151 ( т.е.1510)
Чтобы произвести деление нужно разделить мантиссу делимого на мантиссу делителя и вычесть из порядка делимого порядок делителя. Затем округлить мантиссу результата и привести его к нормализованной форме.
Пример деления в десятичной системе
303:30
(303)10 = 103*0,303
(30)10 = 102*0,3
мантисса 0,303:0,3=0,0101, порядок 3-2 =1
Результат: 101*0,0101. После нормализации: 102*0,101 (т.е.10,1)
Представление чисел ЭВМ с плавающей точкой подчиняется строгим стандартам: это IEEE 754, который постоянно обновляется IEEE 754 -2008, IEEE 754 -2019 и т.д. Используется 32, 64 и др, точность одинарная, двойная и др. Соотношение количества бит в мантиссе и порядке при фиксированном общем количестве бит, выбирается так, чтобы был компромисс между точностью и динамическим диапазоном. Чтобы представлять соотношение, между количеством бит мантиссы и порядка, отметим, что при 32 - разрядном представлении 8 бит отводится на порядок, 23 на мантиссу и знак.
|
|
Заметим, что в литературе порядок также иногда называют экспонентой или просто показателем степени
Представление чисел в десятичной, двоичной и 16-ричной форме.
Десят. | 16-рич. (h) | Двоичная форма (b) |
0 | 0 | 0 0 0 0 |
1 | 1 | 0 0 0 1 |
2 | 2 | 0 0 1 0 |
3 | 3 | 0 0 1 1 |
4 | 4 | 0 1 0 0 |
5 | 5 | 0 1 0 1 |
6 | 6 | 0 1 1 0 |
7 | 7 | 0 1 1 1 |
8 | 8 | 1 0 0 0 |
9 | 9 | 1 0 0 1 |
10 | A | 1 0 1 0 |
11 | B | 1 0 1 1 |
12 | C | 1 1 0 0 |
13 | D | 1 1 0 1 |
14 | E | 1 1 1 0 |
15 | F | 1 1 1 1 |
16 | 10 | 1 0 0 0 0 |
… | ….. | …………………… |
Таблица 1
Правила перевода чисел из одной системы в другую
2, 8, 10, 16
Из десятичной в двоичную:
Записывается ряд чисел, степень 2 (более понятный вариант формулы 1):
2n …. 64 32 16 8 4 2 1 0,5 0,25 … 2-n
Возьмем вначале целое число, допустим 35 и находим ближайшее меньшее из приведенного ряда 32 ставим в эту позицию 1 вычитаем 35-32, остаток 3
1
остаток 3 меньше следующего числа 16, ставим в следующую позицию 0
1 0
остаток 3 меньше следующего числа 8, ставим в следующую позицию 0
1 0 0
остаток 3 меньше следующего числа 4, ставим в следующую позицию 0
|
|
1 0 0 0
остаток 3 не меньше следующего числа 2, ставим в следующую позицию 1 и вычитаем из остатка 2, новый остаток 1
1 0 0 0 1
остаток 1 не меньше следующего числа 1 ставим в следующую позицию 1
Итоговый код 1 0 0 0 1 1
Из двоичной в десятичную (для того же примера)
1*32+0*16+0*8+0*4+1*2+1*1 = 35 если «пропускать» 0:
32+2+1=35
Дробные точно так же для числа 35, 8, с точностью 2 знака после запятой
1 0 0 0 1 1.1 1 для числа 35, 7, с точностью 2 знака после запятой
1 0 0 0 1 1.1 0
Из двоичной в 8-ричную – выделяются триадамисправа налево, в недостающих цифрах подразумеваются 0
1 11 0 11 1 1
3 5 7
Из двоичной в 16-ричную – выделяются тетрадами справа налево, в недостающих цифрах подразумеваются 0
1 1 11 0 0 11 1 1 0
7 9 E
Из 8-ричной и 16-ричной в двоичную – триадами и тетрадами, см. таблицу 1
Представление положительных и отрицательных чисел в ЭВМ, сведение операции вычитания к операции алгебраического сложения
Знак положительного числа кодируется 0 , отрицательного – 1.
Прямой код числа: знак и код из таблицы 1
+5 0 0101 (1 бит для знака 4 бита для числа)
-7 1 0111
У положительного числа используется только прямой код.
У отрицательного числа возможно три кода.
Прямой – строится подобно положительному коду, только знак равен 1, например (–5)пр. = 1 00101 (5 бит для числа).
Обратный – 0 меняется на 1, 1 на 0, знак равен 1, например
(–5)обр =1 11010.
Дополнительный – к обратному коду добавляется 1, например
(5)доп =1 11011.
Обратный и дополнительный коды отрицательного числа используются при замене операции вычитания операцией сложения, в котором отрицательное число представлено в дополнительном коде.
Пример 1: 9 – 5
0 0 1 0 0 1 +9
1 1 1 0 1 1 (–5)доп
--------------------------------------
0 0 0 1 0 0 +4
Числа складываются с учетом переноса, причем перенос действует и на знаковый разряд – в нашем случае в знаковом разряде 0, поскольку к имеющейся единице добавляется единица переноса из старшего разряда. Кстати, отметим, что имеется перенос в знаковый разряд и из знакового разряда. Второй перенос внешне не виден, но это обстоятельство важно при фиксации ошибки переполнения разрядной сетки. Эту ошибку проиллюстрируем на простом примере: допустим у нас один знаковый разряд и 3 информационных.
Пример 2: 5+5
0 1 0 1 +5 если добавить 1 инф. разряд 0 0 1 0 1 +5
0 1 0 1 +5 0 0 1 0 1 +5
1 0 1 0 - отриц. число 0 1 0 1 0 +10
Ошибка ! Ошибки нет ! В первом случае произошла ошибка от переполнения разрядной сетки. Общее правило таково: если нет переносов из знакового разряда и в знаковый разряд, или имеется два переноса, то ошибки нет.
Если же имеется только один перенос (например, в примере 2 только один перенос в знаковый разряд), то возникает ошибка из-за переполнения разрядной сетки. Это правило иллюстрируют нижеприведенные примеры:
В примерах пунктирной линией отделен бит знака.
Рассмотрим аппаратную реализацию алгебраического сложения для примера 9-4, используется сумматор, рассмотренный во 2 лекции
Пример конкретной реализации алгебраического суммирования 9-5
Дата добавления: 2021-11-30; просмотров: 34; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!