Все остальные операции из набора сдвигов не зависят от знака (и от формата обратного дополнения) и могут быть получены простыми арифметическими действиями, кажется так. Вирт это дело очень любит, умножил/поделил на 01000H вот и сдвинул туда/сюда. Пришлось мне бороться с этим при реализации компилера под всякие архитектуры странные.