Лекция: Приведите правило и пример определения ситуации переполнения при выполнении сложения и вычитания целых чисел в ЭВМ. (ОргЭВМ)
Правила определения переполнения:
· Определяется наличие переносов из 2 старших рарзядов числа. Если переносов нет, то результат операции правильный.
· Если есть перенос из обоих разрядов, то результат правильный
· Если из одного разряда есть перенос а из второго – нет, то результат неверный и соответствует ситуации переполнения.
nn = (not x)*(noty3)*z3 V (not z3)*x3*y3
Для устранения этого недостатка в ЭВМ часто используют модифицированные коды: для изображения знака числа используются 2 двоичных разряда, при этом знак "+" изображается комбинацией 00, а знак "-" -комбинацией 11. Тогда ситуация переполнения определяется при разных значениях битовых разрядов знака, а именно, если в знаковых разрядах получаются комбинации 01 или 10 — значит, произошло переполнение.
Например, сложим –120 и –34 и –13 и +98:
11.0001000 11.1110011
+11.1011101+00.1100010
1 10.1100110 (переполнение) 1 00.1010101 (нет переполнения)
Умножение многоразрядных двоичных чисел производится путем образования частичных произведений и последующего их суммирования. Частичные произведения получаются после сдвигов умножителя. Единственной особенностью является то, что если сомножитель является отрицательным (знаковые разряды равны 11), то перед началом умножения следует приписать к нему слева столько единиц, сколько значащих разрядов у другого сомножителя справа от запятой. Результат произведения всегда получается в дополнительном коде.
Операция деления представляется последовательностью операций вычитания и сдвига делителя.
Следует отметить некоторые особенности выполнения операций над числами с плавающей запятой. При сложении или вычитании чисел с одинаковыми порядками, их мантиссы складываются или вычитаются, а порядку присваивается общее значение. Если порядки исходных чисел разные, то сначала эти порядки выравниваются (число с меньшим порядком приводится к числу с большим порядком), а затем мантиссы складываются или вычитаются. Сумма или разность имеют порядок большего числа. Если при нахождении суммы или разности получается переполнение, то мантисса сдвигается вправо на один разряд, а порядок результата увеличивается на 1.
При умножении чисел с плавающей запятой их мантиссы перемножаются, а порядки складываются.
При делении мантисса делимого делится на мантиссу делителя, а порядок результата получается как разница порядка делимого и делителя. При этом, если мантисса делимого больше мантиссы делителя, то частное окажется больше 1 (происходит переполнение). В этом случае частное сдвигается на 1 разряд вправо, а порядок результата увеличивается на 1.