|
Переполнение при выполнении операции сложения целых чисел со знаком в ЭВМ
Переполнением называется выход результата выполнения арифметической операции из допустимого диапазона представления чисел. В двоичной системе при выполнении операции сложения чисел со знаком переполнение может возникнуть в двух случаях: · если слагаемые положительны, а их сумма – отрицательна; · если слагаемые отрицательны, а их сумма – положительна. При сложении чисел с разным знаком переполнение возникнуть не может. Пример. n = 4. Диапазон представления от -8 до +7.
0111 (+7) + 0110 (+6)
6. ПРИМЕР ВЫПОЛНЕНИЯ КОНТРОЛЬНОГО ЗАДАНИЯ
Выполнение задания рассмотрим на конкретном примере, предположив, что предпоследней цифре шифра соответствует число A1 = 90 (10), а последней – число A2 = 33 (10). Для выполнения задания необходимо выполнить следующую последовательность действий: 1. Cформировать число W в десятичной системе. W = 90,33 (10). 2. Для перевода числа W в другие системы необходимо воспользоваться отдельно правилами перевода целой и дробной части числа (число A1 – целое, а число A2 – дробное). Перевод в двоичную систему.
0,56
1,12 W =1011010,010101 (2). Проверим правильность перевода:
Перевод в восьмеричную систему.
а) целой части б) дробной части
88 11 8 8
W =132,25 (8). Проверим правильность перевода:
Перевод в шестнадцатеричную систему.
а) целой части б) дробной части
80 5 16
W =5A,54 (16). Проверим правильность перевода:
Заметим, что дробная часть исходного числа и дробная часть, получаемая при переводе в десятичную систему из двоичной, восьмеричной и шестнадцатеричной систем отличается на 0,001875, что обусловлено заданной точностью перевода. Поскольку двоичная система связана с восьмеричной и шестнадцатеричной специальными соотношениями (8 = 23,16 = 24), то выполнив перевод из десятичной системы в двоичную, можно выполнить перевод в восьмеричную систему (разбивая двоичное число на триады) и в шестнадцатеричную систему (разбивая число на тетрады).
1 3 2, 2 5 (8)
5 A, 5 4 (16). 3. Представим числа в дополнительном коде.
3.1 Для двоичной системы
A1 = 1011010 (2). + A1 = 0 | 1011010. - A1 = 1 | 0100101 (инвертируем разряды) + 1 (добавляем 1 к младшему разряду)
Переведем целое число A2 в двоичную, восьмеричную и шестнадцатиричную системы счисления (также как мы переводили число A1). A2 = 33 (10) = 100001 (2) = 41 (8) = 21 (16). Так как число A2 меньше числа A1, а операции над числами выполняются в фиксированном формате, то в качестве базового выбираем формат, имеющий число разрядов, необходимое для представления числа A1, а в старшую часть числа A2 для выравнивания добавляем незначащие нули, если это необходимо. A2 = 0100001 (2). + A2 = 0 | 0100001. - A2 = 1 | 1011110 (инвертируем разряды) + 1 (добавляем 1 к младшему разряду)
В этом примере для представления чисел в двоичной системе счисления требуется 8 двоичных разрядов, включая знаковый разряд, т.е. можно сказать, что используется формат байта. Следовательно, в восьмеричной системе для представления чисел потребуется три разряда, а в шестнадцатеричной – два.
3.2 Для восьмеричной системы:
A1 = 132 (8). + A1 = 132. - A1 = 645 (заменяем цифры на взаимно обратные) + 1 (добавляем 1 к младшему разряду)
A2 = 41 (8). + A2 = 041. - A2 = 736 (заменяем цифры на взаимно обратные) + 1 (добавляем 1 к младшему разряду)
3.3 Для шестнадцатиричной системы:
A1 = 5A (16). +A1 = 5A. - A1 = A5 (заменяем цифры на взаимно обратные) + 1 (добавляем 1 к младшему разряду)
A2 = 21 (16). + A2 = 21. - A2 = DE (заменяем цифры на взаимно обратные) + 1 (добавляем 1 к младшему разряду)
4. Выполним операции сложения над числами в двоичной, восьмеричной и шестнадцатеричной системах:
4.1 В двоичной системе:
A1 + A2 = 0 | 1011010 -A1 – A2 = 1 | 0100110 + 0 | 0100001 1 | 1011111
A1 - A2 = 0 | 1011010 -A1 + A2 = 1 | 0100110 + 1 | 1011111 0 | 0100001
4.2 В восьмеричной системе:
A1 + A2 = 132 -A1 – A2 = 646 + 041 737
A1 - A2 = 132 -A1 + A2 = 646 + 737 041
4.3 В шестнадцатеричной системе:
A1 + A2 = 5A -A1 – A2 = A6 + 21 DF
A1 - A2 = 5A -A1 + A2 = A6 + DF 21
Заметим, что так как A1 + A2 = - (-A1 - A2) и A1 - A2 = - (A2 – A1), то вместо четырех действий в каждой системе можно было выполнить только два, а остальные два результата получить, используя перевод в дополнительный код. Например, для системы с основанием 16 имеем:
A1 + A2 = 7B (16) -A1 – A2 = 84 + 1
Покажем, что для операции A1 – A2 действия во всех системах счисления приводят к одному и тому же результату, используя перевод в десятичную систему.
A1 – A2 = 90 – 33 = 57 (10). A1 – A2 = 0111001 (2) = A1 – A2 = 071 (8) = A1 – A2 = 039 (16) =
5. Проверим полученные результаты на наличие арифметического переполнения. Так как в нашем примере знаковые числа представляются в формате байта, то допустимый диапазон представления чисел в десятичной системе составляет от -128 до + 127. В рассмотренном примере при сложении чисел арифметического переполнения не возникает
7. ПРИМЕРНЫЙ ПЕРЕЧЕНЬ ЭКЗАМЕНАЦИОННЫХ ВОПРОСОВ
ОГЛАВЛЕНИЕ
![]() ![]() Конфликты в семейной жизни. Как это изменить? Редкий брак и взаимоотношения существуют без конфликтов и напряженности. Через это проходят все... ![]() Что делает отдел по эксплуатации и сопровождению ИС? Отвечает за сохранность данных (расписания копирования, копирование и пр.)... ![]() ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры... ![]() Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор... Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:
|