> -- Oleg N. Cher писал(а):
> Ещё вопрос. В Обероне-07 есть встроенные функции ASR (арифметический сдвиг вправо), LSL (логический сдвиг влево) и ROR (циклический сдвиг вправо), хотя логического сдвига вправо и циклического сдвига влево нет. Или Вирт решил, что такие сдвиги и не нужны. Может от бедности? Сложно сказать. Я вообще не понимаю, зачем понадобилось выносить логический и циклический сдвиги из SYSTEM в язык. Это же работа с битами.Линейный сдвиг влево для арифметического и логического варианта не отличаются - знаковый бит теряется( но устанавливается специальный флаг ), справа вписываются нули. Поэтому Вирт посчитал, что наличие двух разных операторов, выполняющих одно и тоже, совершенно излишняя сложность. Поэтому он оставил аббревиатуру LSL ( по-сути это и есть логический сдвиг ). А вот линейный арифметический сдвиг вправо работает именно так, как нужно - знак числа сохраняется. Беззнаковых типов у Вирта нет, поэтому наличие логического сдвига вправо - лишняя сущность (возможно, что и в учебном процессоре RISC5 тоже нет такой команды). Я же говорю - это узко заточенный язык, под конкретное применение. По сюжету он не нужен.