КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Сложение и вычитание
Выполнение арифметических действий над целыми числами компьютером Диапазоны значений целых чисел со знаком Целые числа со знаком Целые числа со знаком обычно занимают в памяти компьютера один, два или четыре байта, при этом самый левый (старший) разряд содержит информацию о знаке числа. Знак “плюс” кодируется нулем, а “минус” — единицей.
Рассмотрим особенности записи целых чисел со знаком на примере однобайтового формата, при котором для знака отводится один разряд, а для цифр абсолютной величины – семь разрядов.
Последние две формы позволяют упростить конструкцию арифметико-логического устройства компьютера путем замены разнообразных арифметических операций операцией cложения. Положительные числа в прямом, обратном и дополнительном кодах изображаются одинаково — двоичными кодами с цифрой 0 в знаковом разряде. Отрицательные числа в прямом, обратном и дополнительном кодах имеют разное представление. 1. Прямой код. В знаковый разряд помещается цифра 1, а в разряды цифровой части числа — двоичный код его абсолютной величины. Например: -538 =101010112. 2. Обратный код. Получается инвертированием всех цифр двоичного кода абсолютной величины числа, включая разряд знака: нули заменяются единицами, а единицы — нулями. Например: -538 = 010101002. 3. Дополнительный код. Получается образованием обратного кода с последующим прибавлением единицы к его младшему разряду. Например: -538 = 010101002 + 000000012 ¾¾¾¾¾¾ = 010101012
При сложении двоичных кодов чисел А и В имеют место четыре основных и два особых случая: 1. Числа А и В положительные. При суммировании складываются все разряды, включая разряд знака. Так как знаковые разряды положительных слагаемых равны нулю, разряд знака суммы тоже равен нулю. Например: A= 538 , B = 128 538 +128 =001010112 + 000010102 = 00 110 1012 = 658 001010112 + 000010102 ¾¾¾¾¾¾ = 001101012 Здесь получен правильный результат. 2. А положительное, число B отрицательное и по абсолютной величине B больше, чем А. Например: 128 +(– 538 ) = – 418 = 000010102 + 010101002 =010111102 000010102 + 010101002 ¾¾¾¾¾¾ = 010111102 Получен правильный результат в обратном коде. При переводе числа в прямой код биты цифровой части результата инвертируются, т.е. 101000012= – 418: 010111102 à 101000012 3. А положительное, число B отрицательное и по абсолютной величине меньше, чем А. Например: 538 +(-128 ) = 418 = 001010112 + 011101012 = 101000002 001010112 + 011101012 ¾¾¾¾¾¾ = 101000002 Компьютер исправляет полученный неправильный результат в прямом коде (–408 вместо 418) переносом единицы из знакового разряда в младший разряд суммы: 101000002 à 001000012 4. Числа А и В оба отрицательные. Например: (–58) + (–58) = –128 = 011110102 + 011110102 = 111101002 011110102 + 011110102 ¾¾¾¾¾¾ = 111101002 Полученный первоначально неправильный результат (получен обратный код числа –138 вместо обратного кода числа –128) компьютер исправляет ошибку переносом единицы из знакового разряда в младший разряд суммы: 111101002 à (перенос 1) à 011101012 (обратный код числа) При переводе результата в прямой код биты цифровой части числа инвертируются: 011101012 à 100010102 (прямой код) = –128 = –1010
При сложении может возникнуть ситуация, когда старшие разряды результата операции не помещаются в отведенной для него ячейке памяти. Такая ситуация называется переполнением разрядной сетки формата числа. Для обнаружения переполнения и оповещения о возникшей ошибке в компьютере используются специальные средства. Ниже приведены два возможных случая переполнения. 5. Числа А и В положительные, но сумма А+В больше, либо равна 2n–1, где n – количество разрядов формата чисел (для однобайтового формата n=8, 2n–1 = 27 =12810). Например: 1208 + 1228 = 010100002 + 010100102 =101000102= 2428= -428 010100002 + 010100102 ¾¾¾¾¾¾ = 101000102 Семи разрядов цифровой части числового формата недостаточно для размещения восьмиразрядной суммы (2428 = 101000102), поэтому старший разряд суммы оказывается в знаковом разряде. Это вызывает несовпадение знака суммы и знаков слагаемых, что является свидетельством переполнения разрядной сетки.
6. Числа А и В отрицательные, а сумма абсолютных величин А и В больше, либо равна 2n–1, где n – количество разрядов формата чисел. В этом случае также знак суммы не совпадает со знаками слагаемых, что будет свидетельствовать о переполнении разрядной сетки.
Дата добавления: 2014-01-20; Просмотров: 392; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |