Программирование на JAVA

разрядов сдвига count представляется 8-разрядным значением, либо задаваемым непосредственно в команде, либо содержащимся в 8-разрядном регистре CL. Существует четыре команды сдвига:

- SHL — логический сдвиг влево;

- SHR — логический сдвиг вправо;

- SAL — арифметический сдвиг влево (то же, что SHL);

- SAR — арифметический сдвиг вправо.

При внимательном рассмотрении представления двоичного числа, понятно, что сдвиг числа на один разряд влево эквивалентен его умножению на 2, а сдвиг на один разряд вправо — его делению на 2. Конечно, при сдвиге влево может произойти переполнение, а при сдвиге вправо может по­теряться конец числа. Освобождающиеся в результате сдвига разряды устанавливаются в 0, а сдвигаемые за границу операнда разряды отмечаются с помощью флага перено­са С, а затем удаляются. Устанавливать флаг С особенно удобно при выполнении арифметических операций с большими числами, занимающими больше одного слова. На рис. 6.2, а показан пример сдвига содержимого регистра R0 влево на два разряда. Команда логического сдвига вправо работает точно так же (рис. 6.2,6).

Еще одно важное наблюдение заключается в том, что при сдвиге вправо в освободившемся разряде должен быть повторен знаковый бит


<< назад вперед >>