Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 – МІКРОПРОЦЕСОРНА ТЕХНИКА, ТА ЕЛЕМЕНТИ ПРОГРА...docx
Скачиваний:
5
Добавлен:
08.09.2019
Размер:
422.48 Кб
Скачать

2.13 Арифметичні дії з кодами чисел

Арифметические действия над двоичными числами производятся по тем же правилам, что и над десятичными. Необходимо только учитывать, что сложение двух единиц дает нуль в данном разряде и единицу переноса в следующий.

Найдем сумму Х1=1101 и Х2=101:

Если сумма превышает число 011111112, то происходит перенос единицы в знаковый разряд. Это свидетельствует об ошибке переполнения.

Вычитание заменяется сложением с числом, записанным в дополнительном коде. Для этого число инвертируется и увеличивается на 1. В основной код число возвращается по тому же правилу.

Умножение двух чисел

Производиться без учета знака. Знаковый разряд получается путем суммирования знаковых разрядов сомножителей без формирования переноса:

1+1=[1]0 – «+», 0+0=0 – «+», 1+0=1 – «–».

Если в i-м разряде множителя находится единица, то к сумме частичных произведений добавляется множимое с соответствующим сдвигом на ) разряд влево; если в i-м разряде множителя нуль, то множимое не прибавляется.

Пример:

100011112=8F16=8*16+15=14310

При «машинном» методе произведение формируется в виде возрастающего (по модулю) значения частичной суммы, равной после умножения на i-й разряд множителя сумме первых i частичных произведений.

1я частичная сумма

2я частичная сумма

3я частичная сумма

4я частичная сумма

Рассмотренные примеры показывают, что для получения произведений, помимо сложения, необходимо выполнять операции сдвига чисел (множимого либо частичной суммы). Очевидно, что произведение двух n - разрядных чисел есть число 2n - разрядное.

Деление двух чисел

Алгоритм с восстановлением остатка

алгоритм:

если остаток положительный, то первая цифра частного - 1, иначе - 0.

Остаток смещаем влево и к нему прибавляется делитель со знаком, обратным знаку остатка. Знак следущего остатка определяет следущую цифру частного. Деление выполняется, пока не выйдет необходимое число разрядов или нулевой остаток.

а делим на b:

2.18 Оператор while в С++

В языке Си основной структурой, управляющей повторением, служит цикл с предусловием while (пока). Он имеет следующий формат

while (условие) оператор;

Условие всегда заключено в скобки, оно может быть произвольным выражением. Оператор while повторяет выполнение оператора следующего условия, до тех пор, пока это условие истинно. Если это условие не истинно с самого начала или становится не истинным в процессе выполнения данного оператора, то управление передается оператору, следующему за оператором цикла. Если повторяемая часть оператора содержит более одного оператора, то повторяемая группа операторов должна быть заключена в фигурные скобки скобки, например:           

while(условие) {оператор_1;оператор_2; оператор}

      Для описания условий в операторе while используются операции условия такие же, как и в операторе if . Приведенная ниже программа подсчитывает сумму цифр введенного числа N. Цикл while последовательно выделяет и суммирует цифру исходного числа, начиная с последней; для для выделения применяется операция взятия остатка от деления - %. При делении целых чисел любая дробная чать отбрасывается, поэтому после операции N=N/10; исходное число уменьшается в 10 раз при каждом "обороте" цикла, пока, наконец, не станет равным нулю, после чего цикл завершается и на экран дисплея выдается значение переменной S, в котором содержится сумма цифр числа N.