next up previous contents
След.: Подсчет битов Выше: Битовые функции Пред.: Побитовое сравнение   Содержание

Сдвиг битов

DSHIFTL(I,J,SHIFT), DSHIFTR -- сдвигают, соответственно, биты аргумента I влево и биты аргумента J вправо на SHIFT позиций, дополняя освободившиеся позиции битами второго аргумента, начиная с самого левого (или самого правого). Аргументы I и J целые, включая константы, но хотя бы один должен иметь целый тип, тот же тип имеет результат. Аргумент SHIFT целый. Функции поэлементны. Пример: DSHIFTL(1,2**30,2) и DSHIFTR(1,16,3) возвращают $ 5$ и $ 2^{29}+2$ , если целый тип по умолчанию имеет $ 32$ бита.

SHIFTL(I,SHIFT), SHIFTR -- сдвигают биты аргумента I на SHIFT позиций влево и вправо, соответственно, дополняя освободившиеся позиции нулями.

SHIFTA(I,SHIFT) -- сдвигает биты вправо, повторяя самый левый бит в освобождающихся позициях.

ISHFT(I,SHIFT) -- сдвигает биты аргумента I на SHIFT позиций влево (но SHIFT может быть меньше нуля, что означает сдвиг вправо). Освобождающиеся позиции заполняются нулями, сдвигаемые за пределы битовой последовательности (то есть вправо от позиции 0 и влево от позиции BIT_SIZE(I)) биты теряются. Пример: ISHFT(3,1) возвращает $ 6$ .

ISHFTC(I,SHIFT[,SIZE]) -- циклически сдвигает SIZE (если этот аргумент опущен, значение равно BIT_SIZE(I)) самых правых битов аргумента I на SHIFT позиций влево (но SHIFT может быть меньше нуля, что означает сдвиг вправо). Биты не теряются, остальные биты не меняют своего значения. Например, ISHFTC(3,2,3) возвращает $ 5$ .



Ilya A. Chernov 2012-12-19
X