Представление положительных и отрицательных чисел в ЭВМ, сведение операции вычитания к операции алгебраического сложения



Лекция 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; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!