- •050101 «Комп’ютерні науки» та «Програмна інженерія»
- •1.1.2 Правила переведення чисел із однієї позиційної системи числення в іншу
- •1.1.2.1 Переведення числа із десяткової системи в будь-яку іншу позиційну систему числення
- •1.1.2.2 Переведення чисел із двійкової (вісімкової, шістнадцятирічної) системи в двійкову систему числення та навпаки
- •1.1.2.3 Пеpеведення чисел із двійкової, вісімкової та шістнадцятирічної системи числення в десяткову систему числення
- •1.2 Завдання до виконання практичної роботи №1
- •1.3 Контрольні питання
- •2.1.2 Віднімання
- •2.1.3 Множення
- •2.1.4 Ділення
- •2.2 Завдання до виконання практичної роботи
- •3.1.1.1 Представлення чисел з фіксованою комою
- •3.1.1.2 Представлення чисел у формі з плаваючою комою
- •3.1.2 Похибки представлення чисел
- •3.1.2.1 Абсолютна похибка представлення чисел
- •3.1.2.2 Відносна похибка представлення числа
- •3.1.3 Представлення цілих чисел у прямому, оберненому та доповню вальному кодах
- •3.1.4 Внутрішнє представлення дійсних чисел
- •4.1.1.2 Додаванння чисел з фіксованою комою у додатковому коді
- •4.1.1.3 Додаванння чисел з фіксованою комою у оберненому коді
- •4.1.2 Переповнення розрядної сітки
- •4.1.3 Додавання чисел при різних значеннях порядків
- •5.1.1.1 Множення чисел з фіксованою комою у прямому коді
- •5.1.1.2 Множення чисел з плаваючою комою
- •5.1.2 Множення чисел у додатковому коді
- •5.1.2.1 Множення чисел з в доповнювальному коді при позитивному множнику
- •5.1.2.1 Множення чисел з в доповнювальному коді при від’ємному множнику
- •Практична робота № 6 Тема: Ділення чисел
- •6.1.1 Ділення чисел з фіксованою крапкою
- •6.1.1.1 Ділення чисел із відновленням залишку
- •6.1.1.1 Ділення чисел без відновленням залишку
- •6.1.2 Ділення чисел з плаваючою крапкою
- •Список літератури
- •Додаток а – Оформлення титульної сторінки
- •Додаток б – Варіанти завдань до практичної роботи №1,2
- •Додаток в – Зразок додавання цілих чисел в оберненому і додатковому кодах
- •Додаток г – Зразок додавання дробових чисел в оберненому і додатковому кодах
- •Додаток д – Зразок множення чисел з фіксованою крапкою у доповнювальному коді
- •Додаток е – Зразок множення чисел з плаваючою крапкою у доповнювальному коді
- •Додаток ж – Зразок ділення чисел з фіксованою крапкою у доповнювальному коді
4.1.1.2 Додаванння чисел з фіксованою комою у додатковому коді
Теорема: Якщо результат суми додаткових кодів чисел негативний, то результат представлений в додатковому коді. Якщо результат суми додаткових кодів чисел позитивний, то результат представлений в прямому коді.
Розглянемо деякі випадки:
1. A>0, B>0, а A + B<1 числа позитивні і не має переповнення. Для цього випадку Aдоп = А, Вдоп = В , то Адоп + Вдоп = А + В = [A + B]доп – результат позитивний.
Наприклад: А = 0,1010; В = 0,0100
Спр.=0.1110
2. A<0, B>0, а |A|B. Для цього випадкуАдоп = q + |-A|, Вдоп = В тоді Адоп+Вдоп = =q + |A| + B = [A + B]доп – результат від’ємний.
А = – 0,1011; В = 0,0100
Результат отриманий від’ємний, це означає, що він представлений в додатковому коді і його необхідно перевести в прямий, щоб отримати істинний результат. Переведення числа з додаткового коду в прямий здійснюємо по наступному алгоритму: всі розряди числа (окрім знакових) інвертуємо (тобто береться обернений код результату) і у молодший розряд додається +1. Знак зберігається.
3. A<0, B>0, а |A|<B. Для цього випадку Адоп = q + |A|, Вдоп = В, тоді Адоп + Вдоп = q + |A| + B. Оскільки значення цієї суми більше q, то з'являється одиниця перенесення в знаковий розряд, що ідентично вилученню із суми q одиниць, тобто результат дорівнює:
Адоп + Вдоп = А + В=Спр.
Наприклад. А = -0,0100; В = 0,1011.
4. A<0, B<0, а |A + B|<1. Для цього випадку Адоп = q +(-А) Вдоп = q +(-В), тоді Адоп + Вдоп = q +(-A) + q +(-B) = [A + B]доп – результат від’ємний і з’являється одиниця переносу із знакового розряду.
Наприклад. . А = – 0,0100; В = – 0,1011.
4.1.1.3 Додаванння чисел з фіксованою комою у оберненому коді
Теорема: Якщо результат суми обернених кодів чисел від’ємний, то результат представлений в оберненому коді. Якщо результат суми додаткових кодів чисел позитивний, то результат представлений в прямому коді.
Розглянемо деякі випадки:
1. А>0, В>0, А+В<1 т.б. обидва числа позитивні. Тоді Аобр. + Вобр = [A + B]обр = А + В, т.б. додавання відбувається
в прямих кодах.
2. A<0, B>0, |A|>B, де Аобр = q - q-n + A, Вобр = В, тоді Аобр + Вобр = q - q-n + A + B = [A + B]обр, т.б. результат від’ємний і в оберненому коді, необхідно повертатися до Спр шляхом інфверсії розрядів числа.
Наприклад:
А = – 0.1011 – 11 В = 0.0111 +7 .
3. A<0, B>0, A<B, тут Аобр = q - q-n + A. Тоді Аобр + Вобр = q - q-n + A + B. Так як сума (А + В) позитивна, то права частина цього виразу стає більше q, що викликає появу одиниці перенесення із знакового розряду в молодший розряд числа (величина перенесення при цьому дорівнює q - q-n), тоді Аобр + Вобр = А+В. Результат позитивний. Це і є Спр.
Наприклад:
А = -0.0101 (-5) В = 0,0111 (+7)
4. А<0, В<О, |А + В|<1, тут Ao6p = q - q-n + A, Вобр= q - q-n + B. Тоді Аобр + Вобр = q - q-n+A+ q - q-n +B. Тут зявляється одиниця переноса, что ідентично вилученню із суми q - q-n, т.б. Аобр+ Вобр= q - q-n + A + B=[A + B]o6p.
Наприклад:
А = -0,0101 ; В = -0,1000 Знайти суму, використовуючи обернений код.
Доодаємо машинні зображення6
4.1.2 Переповнення розрядної сітки
Части при додаванні чисел із однаковими знаками, представленими ув формі з фіксованою комою, виникає переповнення розрядної сітки. При цьому, щоб уникнути спотворення результату додавання, автомат повинен фіксувати переповнення і проводити правий зсув числа.
Признаком переполнения разрядной сетки сумматора прямого кода является появление единицы переноса из старшего разряда цифровой части числа.
Приклад.
А=0,1010; В=0,1101.
Получен искаженный результат, из-за потери переноса.
Признаком переполнения разрядной сетки сумматора дополнительного кода при сложении положительных чисел является отрицательный знак результата, а при сложении отрицательных чисел - положительный знак результата.
Приклад: А=0,1011, В=0,1010
Признаком переполнения разрядной сетки сумматора обратного кода является знак результата, противоположный знакам операндов.
Приклад:
1).
А=0,0111, В=0,1101
Знак числа искажен.
Для устранения потерь от переноса единицы переполнения, в составе цифрового автомата должны быть предусмотрены дополнительные средства, позволяющие фиксировать і анализировать переполнения по их признакам с целью устранения искажения результата.
Чтобы фиксировать переполнения разрядной сетки в ДСПК, ДСОК, ДСДК, вводится вспомогательный разряд в знаковую часть изображения числа, который называют разрядом переполнения числа. Такое представление числа называется модифицированным (см. рисунок 8.1)
В машинном представлении чисел, представленных в модифицированном коде, используется (n+2) разряда: из них 2 знаковых, запятая опускается, устанавливается постоянный коэффициент формата Кф.
Приклад: 1) А=0,1011,В=0,1010.
Здесь признаком переполнения является 1 в знаковом разряде. По этому признаку производится сдвиг числа вправо с одновременным увеличением коэффициента формата Кф на +1 і восстановлением (по значению Sg1) знака 00 числа, проверяется нормализация числа (наличие 1 после знака числа).
2) А=-0,1011, В=-0,1001. Перетворимо в машинную форму: Ампр.=11.1011, Вмпр.=11.1001. Так как оба числа отрицательны і операция сложения выполняется на сумматоре дополнительного кода, то в сумматор числа поступают в дополнительном коде.
Анализ разрядов знака результата (10) показал, необходимость восстановления его (11), сдвигая число вправо на один разряд, с одновременным увеличением коэффициента формата Кф на +1. Результат отрицательный, і поэтому, представлен в дополнительном коде. Поэтому, число преобразуется в прямой код через обратный с добавлением в младший разряд +1.
Числа, представленные в формате с плавающей точкой (запятой) имеют две части – мантиссу і порядок. Поэтому, операция алгебраического сложения выполняется отдельно над мантиссой і над порядком. Следовательно, в цифровом автомате может быть два суммирующих устройства, для мантиссы і для порядка.
Для чисел с плавающей точкой справедливо условие нормализации: q-1< | mA| < 1 (9.1),
где q - основание системы счисления; mA - мантиссы числа.
Это нормализованное представление числа, і оно требует, чтобы в старшем разряде мантиссы двоичного числа стояла единица. Для двоичной системы это будет означать, что мантисса всегда находится в пределах: 0,5≤ |mA|< 1 (9.2)
При выполнении автоматом операций над числами, нормализуют как входные слагаемые, так і выходной результат.
Операция нормализации числа состоит из условия нормализации (9.1) і осуществляется методом сдвига мантиссы числа в ту или иную сторону. Сдвиги могут производиться влево или вправо в пределах разрядной сетки машины по правилам представленных моделью таблицы 9.1.
Модифицированный сдвиг - операция над модифицированным изображением числа, выполняется по модели таблицы 9.2.
Величина зависит от кода. Для дополнительного кода ε = 0, для обратного кода = 1.
При сложении чисел, результат сложения может выйти из нормализации как справа уравнения (9.1) так і слева.
Обозначим через γ - признак нарушения нормализации числа справа, указывающий на необходимость сдвига числа вправо на один разряд для восстановления знака числа.
Признаком нарушения нормализации числа слева δ (когда результат по абсолютной величине оказывается меньше 1/q ) является наличие одинаковых комбинаций в разряде переполнения і старшем разряде цифровой части сумматора.
Итак, рассмотрим сложение чисел А = mApA і В = mBpB имеющих одинаковый порядок pA=pB Обе мантиссы удовлетворяют условию нормализации.
Сложение мантиссы осуществляют на сумматоре ДСДК или ДСОК по правилу сложения чисел аналогично в формате с фиксированной запятой. Если после сложения мантисса результата удовлетворяет условию нормализации (т.е. δ = 0, γ=0), то к этому результату приписывается порядок любого из операндов. В противном случае производится нормализация числа.
Приклад 1. Найти сумму чисел
А=0,1000*2-3 і В=-0,1011*2-3
Мантиссы і порядок обрабатываются на ДСДК.
Здесь Sg2&R1=11 т.е.δ =1, γ=0. Значить, необходим сдвиг мантиссы влево на 1разряд.
[m’c]=11,1010 Проверяем. Снова δ=1, γ=0. Значить, необходим еще сдвиг влево на 1 разряд.
[m"c]доп. 11, 0100 Проверяем. Все в порядке δ= 0, γ=0.
Одновременно со сдвигом нужна коррекция порядка на
–2(10)=1.010(2) (что равносильно прибавлению дополнительного кода 1.110).
тогда число равно: