10001 1-е частное произведение

00000 2-е частное произведение

10001 3-е частное произведение

10101.01 произведение

 

Если Вам совсем непонятно, что здесь написано, еще раз почитайте замечательную книжку [2].

Но этот пример можно трактовать и немножко по-другому. Рассмотрим, что здесь в основном происходит. Анализируется младший бит множителя. Если он равен 1 (как в данном примере), то в результат в качестве первого частного произведения записывается множимое. Затем анализируется следующий бит множителя. Если он равен 1, то нужно взять множимое и сдвинуть его на 1 разряд влево. Если же следующий бит равен 0 (как в данном примере), то нужно взять 0 и сдвинуть его на 1 разряд влево. В принципе, также поступают и при умножении «столбиком» в десятичной системе счисления, но там множимое приходится умножать на цифры от 0 до 9, а в двоичной системе счисления это умножение сводится к выбору 0 или множимого (это умножение на 0 и 1). Эти операции по нахождению частных произведений производят столько раз, сколько разрядов в множителе. Потом все частные произведения складывают и находят произведение.

Таким образом, умножение в двоичной системе счисления сводится к сдвигам и суммированию.

Отметим, что анализ множителя можно начинать со старшего разряда, только сдвиги частных произведений нужно будет производить вправо. Просто нам привычнее начинать с младшего значащего разряда, а микропроцессоры часто предпочитают обратную последовательность анализа. И микропроцессору не обязательно иметь команду умножения. Она может быть заменена набором команд анализа битов (обычно это логические команды), сдвига и суммирования. Это будет называться программной реализацией умножения. Правда, это займет у программиста некоторого времени и пространства в памяти программ. Поэтому аппаратное умножение всегда эффективнее, но не во всех процессорах были команды умножения…

 

4.4 Деление в двоичной системе счисления

Наверное, все, что было сказано про умножение, можно применить и к делению. Чтобы оставить Вам возможность проявить себя и показать, что деление сводится к вычитанию, здесь приведем пример, а выводы Вы получите самостоятельно.

(Это место для выводов и оставлено).

 

11111.1 | 11

11 1010.1

011

11

011

11

0