Задание 1.1. Найти значения С1, С2, С3, С4, определяемые выражениями: С1 = А + В; С2 = А – В; С3 = В – А; С4 = -А – В; где А = 3275 и В = -2387. При выполнении задания операнды А и В необходимо представить в двоично-десятичной системе, сформировать для них прямые коды и, используя обратный код, найти значения С1, С2, С3, С4. Результат представить в прямом коде.
Решение. Двоично-десятичный код для чисел А и Б: А2-10 = +0011 0010 0111 0101 В2-10 = - 0010 0011 1000 0111 Прямой, дополнительный и инверсный код для чисел А и В: X Прямой код ([X]_пк) Инверсный код ([X]_ик) Дополнительный код ([X]_дк) А 0.0011 0010 0111 0101 0.0011 0010 0111 0101 -А 1.0011 0010 0111 0101 1.1100 1101 1000 1011 B 1.0010 0011 1000 0111 1.1101 1100 0111 1001 -B 0.0010 0011 1000 0111 0.0010 0011 1000 0111 [|А|]_пк = 0.0011 0010 0111 0101, [|В|]_пк = 0.0010 0011 1000 0111. Расчет выражений для С1, С2, С3, С4 осуществляется следующим образом: С1 = А + В. * * * 00.0011 0010 0111 0101- [А]_мдк 11.1101 1100 0111 1001 - [В]_мик = [В]_мдк + 6, 00.0000 1110 1110 1110 1010 1010 1010 – коррекция 00.0000 1000 1000 1000 [С1]_пк= 0.0000 1000 1000 1000, [С1]_10= + 0 8 8 8
С2 = А – В. С3 = В – А.
Так как в выражении С2 и С3 участвуют числа с одинаковыми знаками, верно выражение |C2|=|C3|.
Задание 1.2. Выполнить операцию умножение с младшего разряда множителя со сдвигом промежуточного результата над числами А и В, представленными с плавающей точкой, если А – {ап = + 4 (порядок А), ам = - 0,54 (мантисса А)}, В – {вп = + 2 (порядок В), вм = - 0,80(мантисса В)}. При выполнении задания порядки и мантиссы операндов А и В необходимо представить в двоичной системе счисления и сформировать для них прямые коды. Разрядность модуля порядка должна быть равна 3, разрядность модуля мантиссы - 6. Результат (порядок и мантисса) должен быть представлен в прямом коде в нормализованной форме. При выполнении операции использовать обратный код. Решение. Переведем числа в двоичную систему счисления: [а_м ]=-〖0,54〗_10; 0,54∙2=1,08(int(0,54∙2)=1 и DF(0,54∙2)=0,08); 0,08∙2=0,16(int(0,08∙2)=0 и DF(rest(0,08∙2)=0,16); 0,16∙2=0,32(int(0,16∙2)=0 и DF(rest(0,16∙2)=0,32); 0,32∙2=0,64(int(0,32∙2)=0 и DF(rest(0,32∙2)=0,64); 0,64∙2=1,28(int(0,64∙2)=1 и DF(rest(0,64∙2)=0,28); 0,28∙2=0,56(int(0,28∙2)=0 и DF(rest(0,28∙2)=0,56); 0,56∙2=1,12(int(0,56∙2)=1 и DF(0,56∙2)=0,12);
[в_м ]=-〖0,80〗_10; 0,80∙2=1,6(int(0,55∙2)=1 и DF(0,80∙2)=0,6); 0,6∙2=1,2(int(0,6∙2)=1 и DF(rest(0,6∙2)=0,2); 0,2∙2=0,4(int(0,2∙2)=0 и DF(rest(0,2∙2)=0,4); 0,4∙2=0,8(int(0,4∙2)=0 и DF(rest(0,4∙2)=0,8); 0,8∙2=1,6(int(0,8∙2)=1 и DF(rest(0,8∙2)=0,6); 0,6∙2=1,2(int(0,6∙2)=1 и DF(rest(0,6∙2)=0,2); 0,2∙2=0,4(int(0,2∙2)=0 и DF(rest(0,2∙2)=0,4); С учетом округления получим результат: [в_м ]=-〖0,80〗_10= 1.110011 + 0 = 1.1100112.
[а_п ]=+4_10=0.〖100〗_2; [в_п ]=〖+2〗_10=0.〖010〗_2.
Сформируем прямой и обратный коды: X Прямой код (Х_пк) Обратный код ([X]_ок) [а_м ] 1.100011 [а_п ] 0.100 0.100 [в_м ] 1.110011 [в_п ] 0.010 0.010
[|а_м |]_пк=0.100011, [|в_м |]_пк=0.110011.
Знак искомого произведения, представляемого знаком его мантиссы, будет положительный, так как знаки мантисс сомножителей оба отрицательные. Порядок произведения определяется как сумма порядков сомножителей (сп = ап + вп), а мантисса произведения – как произведение мантисс сомножителей (см = ам * вм). Однако, учитывая то, что при умножении мантисс может произойти нарушение нормализации, в результате указанных действий будет найдено предварительные значения порядка и мантиссы искомого произведения и окончательное значение произведения будет найдено только после устранения нарушения нормализации. Найдем предварительное значение порядка искомого произведения. сп = ап + вп: 0.100 - [а_п ]_ок, 0.010 - [b_п ]_ок, 0.110 - [с_п ]_ок= [с_п ]_пк. Абсолютное значение предварительного значения мантиссы произведения определяется следующим образом: |с_м |=|а_м |*|в_м |:
Таким образом, [|с_м |]_пк = 0.011011111001, учитывая, что разрядность модуля мантиссы – 6, с учетом округления имеем: [|с_м |]_пк = 0.011100.
При формировании мантиссы произведения возможет только один вид нарушения нормализации – нарушение нормализации справа от точки с появлением нуля только в старшем разряде мантиссы. Мантисса произведения ненормализованная. Нормализуем мантиссу, сдвинув ее на один разряд влево, а предварительное значение порядка уменьшим на единицу. [|с_м |]_пк=0.011100→0.111000,
[с_п ]_пк: 00.110 - [с_п ]_мок, 11.110 100.100 1 – учет переноса при суммировании обратных кодов, 00.101 - [с_п ]_мок = [с_п ]_мпк. После нормализации окончательное значение мантиссы и порядка произведения имеем с учетом ранее полученного знака: [с_м ]_пк = 0.111000, [с_п ]_мпк = 0.101.