К О В А Л Ь Д И 56 86 72 32 76 53 12 94 4.1 Виконати порозрядні операції над двома 16-розрядними кодами: (1ц1л)(2ц1л)(1ц2л)(2ц2л) and (1ц7л)(2ц7л)(1ц8л)(2ц8л) – операція І, (1ц1л)(2ц1л)(1ц2л)(2ц2л) or (1ц7л)(2ц7л)(1ц8л)(2ц8л) – операція АБО, (1ц1л)(2ц1л)(1ц2л)(2ц2л) xor (1ц7л)(2ц7л)(1ц8л)(2ц8л) – операція ВИКЛЮЧНЕ АБО. Синтезувати в базисі Буля функціональні схеми пристроїв, які виконують дані операції, і навести значення сигналів на входах схеми і на виходах кожного елемента схеми. 5 6 8 6 1 2 9 4 (1ц1л)(2ц1л)(1ц2л)(2ц2л) AND (1ц7л)(2ц7л)(1ц8л)(2ц8л) (1ц1л)(2ц1л)(1ц2л)(2ц2л) OR (1ц7л)(2ц7л)(1ц8л)(2ц8л) (1ц1л)(2ц1л)(1ц2л)(2ц2л) XOR (1ц7л)(2ц7л)(1ц8л)(2ц8л) a = 0101 0110 1000 0110 b = 0001 0010 1001 0100 ___________________ a&b = 0001 0010 1000 0100 avb = 0101 0110 1001 0110 a#b = 0100 0100 0001 0010
4.2 Виконати операцію віднімання чисел у двійковому коді: (1ц3л)(1ц1л)(2ц1л)-(1ц8л)(2ц8л), (1ц8л)(2ц8л)-(1ц3л)(1ц1л)(2ц1л). Від'ємний результат подати у прямому коді. Після виконання вказаних операцій навести у шістнадцятковому коді значення операндів і результату. Синтезувати на базі повних однорозрядних суматорів функціональну схему багаторозрядного суматора, який виконує дані операції, і навести значення сигналів на входах схеми і на виходах кожного однорозрядного суматора. Синтезувати в базисі Буля функціональну схему повного однорозрядного суматора, навести його таблицю істинності і значення сигналів на входах суматора і на виходах кожного його елемента для кожного розряду згаданого вище багаторозрядного суматора. 7 5 6 9 4 (1ц3л)(1ц1л)(2ц1л) - (1ц8л)(2ц8л) 9 4 7 5 6 (1ц8л)(2ц8л) - (1ц3л)(1ц1л)(2ц1л) a = 756 = 0111 0101 0110 a(об) = 1000 1010 1001 a(доп) = 1000 1010 1010 b = 94 = 0000 1001 0100 b(об) = 1111 0110 1011 b(доп) = 1111 0110 1100 _ _ _ _ _ _ _ _ _ _ _ _ a-b : a(пр) = 0,0111 0101 0110 b(доп) = 1,1111 0110 1100 ___________________________ (a+b)доп = 0,0110 1100 0010 (a+b)пр = 0,0110 1100 0010 = 6C2 b-a : b(пр) = 0,0000 1001 0100 a(доп) = 1,1000 1010 1010 ___________________________ (b+a)доп = 1,1001 0011 1110 (b+a)пр = 1,0110 1100 0010 = -6C2 Внутрішня схема 16 розрядного суматора на базі одно розрядних суматорів: / Внутрішня схема однорозрядного суматора в базисі Буля: / Co = /ABCi v A/BCi v AB/Ci v ABCi = BCi v ACi v AB; S = /A/BCi v /AB/Ci v A/B/Ci v ABCi. 4.3 Виконати округлення 16-розрядних двійкових кодів із точністю до 1/2 одиниці молодшого розряду, який залишається. Коди: 1(1ц4л)(2ц4л)(1ц5л)(2ц5л) - від'ємне число в доповняльному коді, 0(1ц4л)(2ц4л)(1ц5л)(2ц5л) - додатне число в доповняльному коді. При першому округленні відкинути два молодших розряди. Наступні округлення провести послідовно через кожних два двійкових розряди. Результат чергового округлення – це початкові дані для наступного округлення. 3 2 7 6 0(1ц4л)(2ц4л)(1ц5л)(2ц5л) 3 2 7 6 1(1ц4л)(2ц4л)(1ц5л)(2ц5л) 3276 = 0011001001110110 Округлення додатнього числа: 1 округлення: a = 00110010011101(10) + 00000000000000(10) _____________________ 00110010011110(00) Результат 1 округлення :00110010011110(00) 2 округлення: a = 001100100111(1000) + 000000000000(1000) _____________________ 001100101000(0000) Результат 2 округлення :001100101000(0000) 3 округлення: a = 0011001010(000000) + 0000000000(100000) _____________________ 0011001010(100000) Результат 3 округлення :0011001010(000000) 4 округлення: a = 00110010(10000000) + 00000000(10000000) _____________________ 00110011(00000000) Результат 4 округлення :00110011(00000000) 5 округлення: a = 001100(1100000000) + 000000(1000000000) _____________________ 001101(0100000000) Результат 5 округлення :001101(0000000000) 6 округлення: a = 0011(010000000000) + 0000(100000000000) _____________________ 0011(110000000000) Результат 6 округлення :0011(000000000000) 7 округлення: a = 00(11000000000000) + 00(10000000000000) _____________________ 01(01000000000000) Результат 7 округлення :01(00000000000000) Округлення вiд'ємного числа: 1 округлення: a = 00110010011101(10) + 00000000000000(01) _____________________ 00110010011101(11) Результат 1 округлення :00110010011101(00) 2 округлення: a = 001100100111(0100) + 000000000000(0111) _____________________ 001100100111(1011) Результат 2 округлення :001100100111(0000) 3 округлення: a = 0011001001(110000) + 0000000000(011111) _____________________ 0011001010(001111) Результат 3 округлення :0011001010(000000) 4 округлення: a = 00110010(10000000) + 00000000(01111111) _____________________ 00110010(11111111) Результат 4 округлення :00110010(00000000) 5 округлення: a = 001100(1000000000) + 000000(0111111111) _____________________ 001100(1111111111) Результат 5 округлення :001100(0000000000) 6 округлення: a = 0011(000000000000) + 0000(011111111111) _____________________ 0011(011111111111) Результат 6 округлення :0011(000000000000) 7 округлення: a = 00(11000000000000) + 00(01111111111111) _____________________ 01(00111111111111) Результат 7 округлення :01(00000000000000) 4.4 Виконати операцію віднімання чисел у двійково-десятковому коді (числа задані в шістнадцятковому коді): (1ц1л)(2ц1л)-(1ц8л)(2ц8л), (1ц8л)(2ц8л)-(1ц1л)(2ц1л). Від'ємний результат подати у прямому двійково-десятковому коді. 5 6 9 4 (1ц1л)(2ц1л) - (1ц8л)(2ц8л) a(дв.десятк код) = 0101 0110 b(дв.об.код) = 0110 1011 b(дв.доп.код) = 0110 1100 Двiйково - десятковий обернений та доповняльний коди: 0110 1100 + 1001 1001 _________ 0000 0101 b(дв-дес.об.код) = 0000 0101 0000 0101 + 0000 0001 _________ 0000 0110 b(дв-дес.об.код) = 0000 0110 Додавання доповняльних кодiв а та b 0101 0110 + 0000 0110 _________ 0101 1100 1 тетрада приймає недопустиме значення, тому виникла потреба її корегувати Корекцiя першої тетради : 0101 1100 + 0000 0110 ________ 0110 0010 2 тетрада приймає допустиме значення, тому немає потреби її корегувати Переносу за межi розрядної сiтки не виникло, це свiдчить про те, що результат вiд'ємний у доповняльному кодi Переведення: 0110 0010 <-вiд'ємний результат у доповняльному кодi 1001 1101 <-iнверсiя двiйкових розрядiв 1001 1101 + 0000 0001 _________ 1001 1110 <-додавання 1 молодшого розряду 1001 1110 + 1001 1001 _________ 0011 0111 <-доповнення до 9 9 0011 0111 + 0000 0001 _________ 0011 1000 <-додавання 1 молодшого розряду Результат: 0011 1000 = -38 9 4 5 6 (1ц8л)(2ц8л) - (1ц1л)(2ц1л) b(дв.десятк код) = 1001 0100 a(дв.об.код) = 1010 1001 a(дв.доп.код) = 1010 1010 Двiйково - десятковий обернений та доповняльний коди: 1010 1010 + 1001 1001 _________ 0100 0011 a(дв-дес.об.код) = 0100 0011 0100 0011 + 0000 0001 _________ 0100 0100 a(дв-дес.об.код) = 0100 0100 Додавання доповняльних кодiв b та a 1001 0100 + 0100 0100 _________ 1101 1000 1 тетрада приймає недопустиме значення, тому виникла потреба її корегувати Корекцiя першої тетради : 1101 1000 + 0000 0110 ________ 1101 1110 2 тетрада приймає недопустиме значення, тому виникла потреба її корегувати Корекцiя другої тетради : 1101 1000 + 0110 0000 ________ 00111000 Перенос за межi розрядної сiтки свiдчить про те, що результат додатнiй 0011 1000 = 38
4.5 Виконати операції множення в доповняльному коді двійкових чисел, поданих спочатку в прямому коді: (+2ц1л) х (+2ц8л), (-2ц1л) х (+2ц8л), (+2ц1л) х (-2ц8л), (-2ц1л) х (-2ц8л). Попередньо всі числа перевести в доповняльний код. Навести алгоритм множення й таблицю, яка відображає зміни всіх операндів (множеного, множника, лічильника, проміжної суми, окремих розрядів та ознак), які беруть участь у множенні, після виконання кожного з операторів алгоритму. Синтезувати на базі повних однорозрядних суматорів і з використанням елементів базиса Буля функціональну схему матричного помножувача, який виконує операцію множення додатніх чисел (+2ц1л) х (+2ц8л), і навести значення сигналів на входах схеми і на виходах кожного елемента схеми. Алгоритм множення:
На алгоритмі множення введені такі позначеня: Лч - лічильник; n - кількість двійкових розрядів множника без знаку; Мк - множник; Ме - множене; S - суматор, після виконання алгоритму в ньому буде знаходитися результат. Розрядність суматора без врахування знаку дорівнює n+m, де m - кількість розрядів множеного без врахування знаку (у прикладі n=m); мол.р. - молодший розряд; АЗП - арифметичний зсув праворуч; ЛЗП - логічний зсув праворуч. ( +6 )*( +4 ) (+2ц1л)*(+2ц8л) Очiкуваний результат (+6)*(+4) = +24 Me = 00.0110 -Me = 11.1010 Mk = 00.0100 Лч | S | Mk |м.р. Мк| Наступна операцiя ____|______________|________|_______|__________________ 4 | |00.0100 |0 |S := АЗП(S) |______________|________|_______|__________________ |->00.00000000 | | |Mk = ЛЗП(Mk) |______________|________|_______|__________________ | |00.0010 | |Лч = Лч - 1 ____|______________|________|_______|__________________ 3 | | |0 |S := АЗП(S) |______________|________|_______|__________________ |->00.00000000 | | |Mk = ЛЗП(Mk) |______________|________|_______|__________________ | |00.0001 | |Лч = Лч - 1 ____|______________|________|_______|__________________ 2 | | |1 |S := S + Me |______________|________|_______|__________________ | 00.00000000 | | | | + | | | | 00.0110 | | | | ___________ | | | | 00.01100000 | | |S := АЗП(S) |______________|________|_______|__________________ |->00.00110000 | | |Mk = ЛЗП(Mk) |______________|________|_______|__________________ | |00.0000 | |Лч = Лч - 1 ____|______________|________|_______|__________________ 1 | | |0 |S := АЗП(S) |______________|________|_______|__________________ |->00.00011000 | | |Mk = ЛЗП(Mk) |______________|________|_______|__________________ | |00.0000 | |Лч = Лч - 1 ____|______________|________|_______|__________________ 0 |00.00011000 | | 0 |Кiнець S =00.00011000 Результат додатнiй у прямому кодi! S = 00011000 = 24
4.7 Виконати операцію ділення 10-розрядного двійкового коду (10)(1ц2л)(1ц8л) на 5-розрядний двійковий код (1)(1ц1л) методом із відновленням залишків. Навести алгоритм ділення й таблицю, яка відображає зміни всіх операндів (діленого, дільника, лічильника, частки, окремих розрядів та ознак), які беруть участь у множенні, після виконання кожного з операторів алгоритму. (10)(1ц2л)(1ц8л) = 89 (1)(1ц1л) = 5 Алгоритм ділення: / В алгоритмі використані такі позначення: Лч - лічильник; Ч - частка; n - кількість двійкових розрядів частки без знаку. Дк - дільник; Де - ділене; Зн - знак; # - позначення операції додавання за модулем 2; S - суматор, на початку виконання алгоритму в ньому буде знаходитися ділене; ЛЗЛ(Х),(Y) - логічний зсув ліворуч числа X, на звільнене місце наймолодшого розряду праворуч записується двійковий розряд Y.