Лабораторные. Общие сведения из теории
Скачать 1.85 Mb.
|
обр (Х)получается из прямого кода последующему правилу Обратный код для положительных чисел совпадает с прямым кодом. Чтобы представить отрицательное двоичное число в обратном коде, нужно оставить в знаковом разряде 1, во всех значащих разрядах заменить 1 на 0, а 0 на 1. Такая операция называется инвертированием и обозначается горизонтальной чертой над инвертируемым выражением. Пример Получить обратный код для числа -11 Р пр (Х)= 1’1011 2 17 Р обр (Х)=1’0100 2 Дополнительный код Р доп (Х) образуется следующим образом Дополнительный код для положительных чисел совпадает с прямым кодом. Дополнительный код отрицательных чисел представляет собой суммирование обратного кода числа с единицей младшего разряда. Пример Получить дополнительный код для числа -13 Р пр (Х)= 1’1101 2 Р обр (Х)= 1’0010 2 Р доп (Х)= 1’0011 2 Иногда возникает такая ситуация, когда подполе цифр разрядов выделено больше, чем это необходимо для представления числа X. Пусть сетка имеет в составе t двоичных разрядов. Один из разрядов (самый старший) резервируется для знака числа. Сам знак кодируется следующим образом «-» соответствует 1, «+» соответствует 0. Само число представляется в двоичной системе счисления и заносится в разрядную сетку так, что его самый младший разряд помещается в самый младший разряд сетки, а последующие разряды – следом. Если число имеет меньшее количество разрядов, чем может вместить разрядная сетка, оставшиеся незаполненными разряды заполняются нулями. Пример Пусть разрядная сетка имеет 8 двоичных разрядов. Разместить в ней двоичное число –10111 Для начала представим число в прямом коде. Р пр (Х)= 1’10111 2 номера разрядов 7 6 5 4 3 2 1 0 содержимое разрядов 1 0 0 1 0 1 1 1 Здесь разряд 7 – знаковый, имеет значение 1, поскольку исходное число отрицательно. В разрядах 0 – 4 размещено само исходное число, разряды 5 и 6 заполнены дополнительными нулями. Пример Пусть разрядная сетка имеет 8 двоичных разрядов. Разместить в ней двоичное число 10111 Для начала представим число в прямом коде. Р пр (Х)= 0’10111 2 номера разрядов 7 6 5 4 3 2 1 0 содержимое разрядов 0 0 0 1 0 1 1 1 18 Нос отрицательными числами в дополнительном коде такая схема работает неправильно. Преобразование дополнительного кода при расширении разрядной сетки выполняется следующим образом Если исходное число было положительным, то все дополнительные биты заполняются нулями, а если отрицательным - единицами. Эта операция называется расширением знака. Пример Пусть разрядная сетка имеет 8 двоичных разрядов. Разместить в ней двоичное число -10010 2 в дополнительном коде. Для начала преобразуем число в прямой, обратный и дополнительный коды, получим Р пр (Х)= 1’10010 2 Р обр (Х)= 1’01101 2 Р доп (Х)= 1’01110 2 номера разрядов 7 6 5 4 3 2 1 0 содержимое разрядов 1 1 1 0 1 1 1 0 2. Представление вещественных чисел Вещественными числами ( в отличие от целых ) в компьютерной технике называются числа, имеющие дробную часть. При их изображении вместо запятой принято ставить точку. Так, например, число 5 — целое, а числа 5.1 и 5.0 — вещественные. Для представления вещественных чисел в современных компьютерах принят способ представления с плавающей запятой. В форме представления с плавающей запятой (точкой) число изображается в виде двух групп цифр • мантисса • порядок. Абсолютная величина мантиссы должна быть меньше 1, а порядок- целым числом. Число в форме с плавающей точкой может быть представлено в следующем виде N = ±M•P ±r , где M — мантисса числа p — основание СС; r — порядок числа- показывает, насколько разрядов ив какую сторону сдвинута запятая при замене формы записи числа. 19 Число может иметь множество представлений в форме с плавающей запятой, например, число 12 может быть записано в видах 0,12•10 2 , 0,012•10 3 , 0,0012•10 4 итак далее. Из приведенного выше примера видно, что благодаря изменению порядка точка перемещается по мантиссе. При этом, если порядок положительный, точка смещается по мантиссек ВЛЕВО, а если отрицательный- ВПРАВО. Все числа с плавающей запятой хранятся в машине в нормализованном виде. Нормализованное число- такое число, старший разряд мантиссы которого больше нуля, то есть первый разряд мантиссы после запятой не может равняться нулю. -348= -0,348•10 5 +1427=+0,1427•10 4 +54,7= +0,547•10 2 +721,355=+0,721355•10 3 +0,00058= +0,58•10 -3 +0,00328=+0,328•10 -2 +300= +0,3•10 3 +30=+0,3•10 2 -10301,202=-0,10301202•10 5 +0,00056=+0,56•10 -3 3. Арифметические операции над числами с фиксированной точкой Сложение (вычитание. Операция вычитания приводится к операции сложения путем преобразования чисел в обратный или дополнительный код. Знаковые разряды участвуют в операции сложения наравне с цифровыми. Требуемая операция Необходимое преобразование А+В А+В А-В А+(-В) -А+В (-А)+В -А-В (-А)+(-В) При выполнении сложения цифр необходимо соблюдать следующие правила 1. Слагаемые размещаются в равных разрядных сетках в прямых кодах. Для выравнивания разрядной сетки слагаемых можно дописывать незначащие нули слева к целой части числа и незначащие нули справа к дробной части числа. 2. Слагаемые складываются по правилам сложения двоичных чисел. При этом знаковые разряды участвуют в вычислениях наряду с числовыми. 3. Если выполняется операция сложения в обратных кодах, единица переноса из знакового разряда суммы прибавляется к ее младшему разряду (те. выполняется циклический перенос. При использовании ДК единица переноса теряется. 20 5. Если результат положителен – он представлен в прямом кодеине требует никаких преобразований. Если результат отрицателен, то он представлен в обратном или дополнительном коде в зависимости оттого, в каком коде происходило сложение. Результат в таком случае преобразуется в прямой код. Пример 1. Сложить в обратном коде числа –34 и +15. Преобразуем слагаемые в прямые коды и разместим их в разрядных сетках -34 = -100010 2 1 0 1 0 0 0 1 0 +15 = +1111 2 0 0 0 0 1 1 1 1 Преобразуем отрицательное слагаемое -34 в обратный код 1 1 0 1 1 1 0 1 Складываем слагаемые 1 1 0 1 1 1 0 1 0 0 0 0 1 1 1 1 Получаем 1 1 1 0 1 1 0 0 Единица переноса не образована судя по знаку, результат отрицателен, значит, представлен в обратном коде (поскольку сложение выполнялось в этом коде) и требует перевода в прямой код 1 0 0 1 0 0 1 1 Таким образом, получено число –10011 2 . Для проверки правильности результата представим его в десятичной системе счисления. Имеем -10011 2 = -19, что соответствует правильному результату. Пример 2. Сложить в обратном коде числа –34 и -15. Разрядная сетка – 8 бит. Преобразуем слагаемые в прямые коды и разместим их в разрядных сетках -34 = -100010 2 1 0 1 0 0 0 1 0 -15 = -1111 2 1 0 0 0 1 1 1 1 Преобразуем отрицательные слагаемые в обратный код для -34 1 1 0 1 1 1 0 1 для -15 1 1 1 1 0 0 0 0 21 Складываем слагаемые 1 1 0 1 1 1 0 1 1 1 1 1 0 0 0 0 Получаем 1 1 0 0 1 1 0 1 1 Образовалась единица переноса из знакового разряда. В соответствии с правилами сложения в обратном коде, она прибавляется к младшему числовому разряду, получаем 11001110 Судя по знаку, результат отрицателен, значит, представлен в обратном коде поскольку сложение выполнялось в этом коде) и требует перевода в прямой код 10110001 Таким образом, получено число –110001 2 . Для проверки правильности результата представим его в десятичной системе счисления. Имеем -110001 2 = -49, что соответствует правильному результату. Пример 3. Сложить в дополнительном коде числа -13 и +8 Преобразуем слагаемые в прямые коды и разместим их в разрядных сетках -13 = -1101 2 1 1 1 0 1 +8 = +1000 2 0 1 0 0 0 Преобразуем отрицательное слагаемое -13 в дополнительный код 1 0 0 1 1 Складываем слагаемые 1 0 0 1 1 0 1 0 0 0 Получаем 1 1 0 1 1 В знаковом разряде стоит единица, значит, результат получен в дополнительном коде. Для перехода к прямому коду необходимо выполнить следующее преобразование От младшего разряда полученного дополнительного кода отнять единицу, получим P обр (х)= Р доп (Х) -1=11011-1=11010. Р пр (Х)= Р обр (Х)= 11010=10101. 22 Пример 4. Сложить в дополнительном коде числа –34 и -15. Разрядная сетка – 8 бит. Преобразуем слагаемые в прямые коды и разместим их в разрядных сетках -34 = -100010 2 1 0 1 0 0 0 1 0 -15 = -1111 2 1 0 0 0 1 1 1 1 Преобразуем отрицательные слагаемые в дополнительный код для -34 1 1 0 1 1 1 1 0 для -15 1 1 1 1 0 0 0 1 Складываем слагаемые 1 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 Получаем 1 1 0 0 1 1 1 1 1 Образовалась единица переноса из знакового разряда. Однако, поскольку сложение выполняется в дополнительном коде, единица переноса из знакового разряда теряется. Таким образом, мы получили результат сложения в дополнительном коде. Поскольку он отрицателен, преобразуем его в прямой код. Тогда имеем P обр (х)= Р доп (Х) -1=11001111-1=11001110. Р пр (Х)= Р обр (Х)= 11001110=10110001. Результат совпадает с результатом примера 2. Иногда при сложении в обратном или дополнительном коде возникают ситуации переполнения. Пример 5. Сложить в обратном коде числа –64 и -67. Разрядная сетка – 8 бит. Преобразуем слагаемые в прямые коды и разместим их в разрядных сетках Для -64 1 1 0 0 0 0 0 0 Для -67 1 1 0 0 0 0 1 1 Преобразуем отрицательные слагаемые в обратный код для -64 23 1 0 1 1 1 1 1 1 Для -67 1 0 1 1 1 1 0 0 Складываем слагаемые 1 0 1 1 1 1 1 1 1 0 1 1 1 1 0 0 Получаем 0 1 1 1 1 0 1 1 1 Образовалась единица переноса из знакового разряда. После сложения единицы переноса имеем окончательный результат 01111100 Анализ показывает, что результат положительный, что противоречит исходным данным складывались два отрицательных числа. Это свидетельствует о переполнении (overflow) разрядной сетки. Таким образом, формальным признаком переполнения разрядной сетки при выполнении операции сложения является то, что знак результата отличается от знаков слагаемых. Такая ситуация может возникнуть только при сложении чисел с одинаковыми знаками. С подобными ситуациями при сложении целых чисел самостоятельно компьютер не справляется, требуется вмешательство программиста. Умножение. Умножение двоичных чисел наиболее просто реализуется в прямом коде и приводится к операциям сложения и сдвигам. Умножение производится путем образования частичных произведений и последующего их суммирования. Каждое частичное произведение равно нулю, если в соответствующем разряде множителя стоит 0, или равно множимому, сдвинутому на соответствующее число разрядов влево, если в разряде множителя стоит 1. Пример 6. Умножить два числа 7 и 5. Перемножим эти числа, представленные прямыми двоичными кодами, также, как это делается в десятичной системе. 7=+111=0111 5=+101=0101 Результат 0100011=+100011 что соответствует числу 35 в десятичной СС. 24 Знак произведения формируется по известному правилу (+)•(+) = (+); (+)•(-) = (-); (-)•(+) = (-);( — )•( — ) = (+). В ЭВМ, как было указано в , знак « —» числа кодируется единицей, а «+» — нулем, но правило формирования знака сохраняется. Операция, которую реализует ЭВМ для определения знака произведения, называется суммой по модулю два и обозначается : 0 0 0 ; 1 1 0 ; 1 0 1 ; 0 Деление. Выполняется путем многократных сдвигов и вычитаний Деление произведено также, как это делается обычно в десятичной системе. Сначала проверяется, можно ли вычесть значение делителя из старших разрядов делимого. Если возможно, тов разряде частного записывается единица и определяется частная разница. В противном случаев частное записывается нуль и разряды делителя сдвигаются вправо на один разряд по отношению к разрядам делимого. К полученной предыдущей разнице сносится очередная цифра делимого, и данный процесс повторяется, пока не будет получена необходимая точность. Делимое перед операцией деления должно быть приведено к разрядной сетке. Только в этом случае при делении на разрядный делитель получается n- разрядное частное. 4. Арифметические операции над двоичными числами с плавающей точкой Представление чисел Арифметические операции Х Х • p Xr Y= Y M • p Yr X+Y= (Х • p Xr-Yr + Y M ) • p Yr X+Y= (Х • p Xr-Yr - Y M ) • p Yr X•Y= (Х Y M ) • p Xr+Yr Примеры X= 0.3 • 10 2 = 30; Y= 0.2 • 10 3 = 200; 25 X + Y = (0.3 • 10 2-3 + 0.2) • 10 3 = 0.23 • 10 3 = 230; X - Y = (0.3 • 10 2-3 - 0.2) •10 3 = (-0.17) • 10 3 = -170; X•Y= (0.3 • 0.2) • 10 2+3 = 0.06 • 10 5 = 6000; X/ Y = (0.3 / 0.2) • 10 2-3 = 1.5 •10 -1 = 0.15 Задания к лабораторной работе В соответствии с выданным вариантом задания преподавателем выполнить 1. Переведите данное число из десятичной системы счисления в двоично- десятичную. 2. Переведите данное число из двоично-десятичной системы счисления в десятичную. 3. Зашифруйте данный текст, используя таблицу кодов 4. Дешифруйте данный текст, используя таблицу кодов 5. Представьте числа в прямом, обратном, дополнительном кодах. Выполните сложение чисел в обратом и дополнительном кодах. Представьте числа в нормализованном виде. Выполните четыре арифметических действия над числами в формате с плавающей точкой Контрольные вопросы 1. Что такое кодирование информации в общем смысле 2. Каково место кодирования среди процессов обработки информации 3. Что такое код Приведите примеры кодирования и декодирования. 4. Как получить прямой и дополнительный коды целого числа 5. Как представляются действительные числа в памяти ЭВМ 6. Какие коды называются двоичными Приведите примеры. 7. Какой код используется для кодирования букв латинского алфавита буквами персонального компьютера 8. Какие коды используются в вычислительной технике для кодирования букв русского алфавита 26 Лабораторная работа №3: Построение логических схем Цель работы освоить алгоритм построения таблиц истинности для логических функций научиться определять и анализировать функции проводимости переключательных схем. Общие сведения из теории Любая переключательная функция может быть выражена через функции И, "ИЛИ, "НЕ. Схема, выражающая функцию F через функции И, "ИЛИ, НЕ, называется ее логической схемой. Этапы построения логической схемы 1. составляется таблица истинности 2. по таблице истинности строится логическая функция с помощью СДНФ совершенной дизъюнктивной нормальной формы 3. по возможности полученная формула минимизируется 4. если заданы базисные элементы, то с помощью законов Моргана приводится к заданному базису. Логическая схема функции F = АСА) (В + СВ представится следующим образом Однако если предварительно упростить функцию F, дважды используя свойство распределительности, то для реализации ее потребуется вместо четырех схем "ИЛИ" и одной схемы И" только две схемы "И" и одна схема "ИЛИ F = АСА) (В + СВ+ СВ+ С) = АВ + С. или или или или и A B C D A+C A+D B+C B+D и и или A B C D 27 Существует множество способов упрощения переключательных функций и определения простоты функции. Мы примем, что простейшей будет функция, содержащая наименьшее количество элементов или их отрицаний. Упрощение переключательной функции путем приведения ее к дизъюнктивной нормальной форме В основе представления ПФ в дизъюнктивных формах лежит понятие элементарной конъюнкции. Конъюнкция любого числа двоичных переменных х1,x2,х3,...x n называется элементарной, если сомножителями в ней являются либо одиночные аргументы, либо отрицания одиночных аргументов. Например, конъюнкции 3 2 1 x x x , 4 являются элементарными. Дизъюнктивной нормальной формой (ДНФ) переключательной функции называется дизъюнкция (логическая сумма) любого числа элементарных конъюнкций. Например, ПФ записана в ДНФ, так как она представляет собой логическую сумму элементарных конъюнкций. Число переменных, входящих в элементарную конъюнкцию, определяет ранг этой конъюнкции. Например, 1 x , 2 x , 3 x — конъюнкции го ранга 3 2 x x , 3 1 x x — конъюнкции го ранга и т. д. Совершенной ДНФ (СДНФ) ПФ, имеющей n аргументов, называется такая форма, в которой все конъюнкции имеют ранг n. СДНФ переключательной функции записывается по таблице истинности. Алгоритм построения таблиц истинности для сложных выражений 1. Определить количество строк количество строк = 2 n + строка для заголовка, n - количество простых высказываний. 2. Определить количество столбцов количество столбцов = количество переменных + количество логических операций • определить количество переменных (простых выражений • определить количество логических операций и последовательность их выполнения. Порядок выполнения логических операций в сложном логическом выражении 28 инверсия конъюнкция • дизъюнкция + 3. Заполнить столбцы результатами выполнения логических операций в обозначенной последовательности с учетом таблиц истинности основных логических операций. Пример Составить таблицу истинности логического выражения F= ) ( C B A 1. Определить количество строк на входе три простых высказывания А, В, С поэтому n=3 и количество строк = 2 3 +1 = 9. 2. Определить количество столбцов переменные А, В, С логические операции A - инверсия (обозначим через 1); B+C - операция дизъюнкции (обозначим через 2); а также искомое окончательное значение арифметического выражения F= ) ( C B A те. F = 1 & 2 - это операция конъюнкции. |