Команды сдвига
Команда сдвига используются для сдвига битов входа IN, влево или вправо. Сдвиг влево умножает содержимое входа IN на 2 в степени n (2n); сдвиг вправо делит содержимое входа IN на 2 в степени n (2n). Например, если вы сдвигаете двоичный эквивалент числа 4 влево на 2 бита, то у вас получится двоичный эквивалент числа 16.
Число, которым вы снабжаете входной параметр N, определяет количество битов, на которое происходит сдвиг. Двоичные разряды, освобождаемые командой сдвига, заполняются или нулями, или состоянием сигнала знакового бита (0 означает положительное значение, а 1 означает отрицательное значение). Состояние сигнала бита, сдвигаемого последним, загружается в бит CC 1 слова состояния (см. раздел 1.4). Биты CC 0 и OV слова состояния сбрасываются в 0. Для анализа бита CC 1 вы можете использовать команды перехода.
Доступны следующие команды сдвига:
- Сдвинуть влево слово, Сдвинуть влево двойное слово
- Сдвинуть вправо слово, Сдвинуть вправо двойное слово
- Сдвинуть вправо целое число, Сдвинуть вправо двойное целое число
Сдвиг влево слова
Состояние сигнала 1 на разрешающем входе (EN) активизирует команду Сдвинуть влево слово. Эта команда поочередно сдвигает влево биты с 15 по 0 входа IN. Перенос в бит 16 не происходит.Вход N определяет количество битов, на которое происходит сдвиг. Если N больше, чем 16, то команда записывает 0 в младшее слово аккумулятора 1 и сбрасывает биты CC 0 и OV слова состояния в 0. Двоичные разряды справа заполняются нулями. Результат операции сдвига может быть просмотрен на выходе OUT. Операция, запускаемая этой командой, всегда сбрасывает биты CC 0 и OV слова состояния в 0. ENO имеет такое же состояние сигнала, как EN.
Блок LAD | Параметры | Тип данных | Область памяти | Описание |
![]() |
EN | BOOL | I, Q, M, D, L | Разрешающий вход |
ENO | BOOL | I, Q, M, D, L | Разрешающий выход | |
IN | WORD | I, Q, M, D, L |
Значение, подвергаемое сдвигу | |
N | WORD | I, Q, M, D, L | Количество двоичных разрядов, на которое происходит сдвиг | |
OUT | WORD | I, Q, M, D, L | Результат операции сдвига |
Пример и биты слова состояния сдвига влево слова
Сдвиг влево двойного слова
Команда сдвигает поочередно влево биты двойного слова с 31 по 0. Вход N определяет количество битов, на которое происходит сдвиг. Если N больше, чем 32, то команда записывает 0 в выход OUT и сбрасывает биты CC 0 и OV слова состояния в 0. Двоичные разряды справа заполняются нулями. Результат операции сдвига может быть просмотрен на выходе OUT.
Операция, запускаемая этой командой, всегда сбрасывает биты CC 0 и OV слова состояния в 0, если N не равно 0. ENO имеет такое же состояние сигнала, как EN.
Блок LAD | Параметры | Тип данных | Область памяти | Описание |
![]() |
EN | BOOL | I, Q, M, D, L | Разрешающий вход |
ENO | BOOL | I, Q, M, D, L | Разрешающий выход | |
IN | DWORD | I, Q, M, D, L |
Значение, подвергаемое сдвигу | |
N | WORD | I, Q, M, D, L | Количество двоичных разрядов, на которое происходит сдвиг | |
OUT | DWORD | I, Q, M, D, L | Результат операции сдвига |
Пример и биты слова состояния сдвига влево двойного слова
Сдвиг вправо слова
Эта команда поочередно сдвигает вправо биты с 0 по 15 входа IN. Биты с 16 по 31 воздействию не подвергаются. Вход N определяет количество битов, на которое происходит сдвиг. Если N больше, чем 16, то команда записывает 0 в выход OUT и сбрасывает биты CC 0 и OV слова состояния в 0. Двоичные разряды слева заполняются нулями. Результат операции сдвига может быть просмотрен на выходе OUT. Операция, запускаемая этой командой, всегда сбрасывает биты CC 0 и OV слова состояния в 0, если N не равно 0. ENO имеет такое же состояние сигнала, как EN.
Блок LAD | Параметры | Тип данных | Область памяти | Описание |
![]() |
EN | BOOL | I, Q, M, D, L | Разрешающий вход |
ENO | BOOL | I, Q, M, D, L | Разрешающий выход | |
IN | WORD | I, Q, M, D, L |
Значение, подвергаемое сдвигу | |
N | WORD | I, Q, M, D, L | Количество двоичных разрядов, на которое происходит сдвиг | |
OUT | WORD | I, Q, M, D, L | Результат операции сдвига |
Пример и биты слова состояния сдвига вправо слова
Сдвиг вправо двойного слова
Эта команда поочередно сдвигает вправо биты с 0 по 31 входа IN. Вход N определяет количество битов, на которое происходит сдвиг. Если N больше, чем 32, то команда записывает 0 в выход OUT и сбрасывает биты CC 0 и OV слова состояния в 0. Двоичные разряды слева заполняются нулями. Результат операции сдвига может быть просмотрен на выходе OUT.
Операция, запускаемая этой командой, всегда сбрасывает биты CC 0 и OV слова состояния в 0, если N не равно 0. ENO имеет такое же состояние сигнала, как EN.
Блок LAD | Параметры | Тип данных | Область памяти | Описание |
![]() |
EN | BOOL | I, Q, M, D, L | Разрешающий вход |
ENO | BOOL | I, Q, M, D, L | Разрешающий выход | |
IN | DWORD | I, Q, M, D, L |
Значение, подвергаемое сдвигу | |
N | WORD | I, Q, M, D, L | Количество двоичных разрядов, на которое происходит сдвиг | |
OUT | DWORD | I, Q, M, D, L | Результат операции сдвига |
Пример и биты слова состояния сдвига вправо двойного слова
Сдвиг вправо целого числа
Эта команда поочередно сдвигает вправо биты с 0 по 15 входа IN. Вход N определяет количество битов, на которое происходит сдвиг. Если N больше, чем 16, то команда ведет себя так, как если бы N было равно 16. Двоичные разряды слева заполняются в соответствии с состоянием сигнала бита 15 (который является битом знака целого числа), то есть они заполняются нулями, если число является положительным, и единицами, если число является отрицательным. Результат операции сдвига может быть просмотрен на выходе OUT. Операция, запускаемая этой командой, всегда сбрасывает биты CC 0 и OV слова состояния в 0, если N не равно 0. ENO имеет такое же состояние сигнала, как EN.
Блок LAD | Параметры | Тип данных | Область памяти | Описание |
![]() |
EN | BOOL | I, Q, M, D, L | Разрешающий вход |
ENO | BOOL | I, Q, M, D, L | Разрешающий выход | |
IN | INT | I, Q, M, D, L |
Значение, подвергаемое сдвигу | |
N | WORD | I, Q, M, D, L | Количество двоичных разрядов, на которое происходит сдвиг | |
OUT | INT | I, Q, M, D, L | Результат операции сдвига |
Пример и биты слова состояния сдвига вправо целого числа
Сдвиг вправо двойного целого числа
Эта команда сдвигает вправо бит за битом все содержимое входа IN. Вход N определяет количество битов, на которое происходит сдвиг. Если N больше, чем 32, то команда ведет себя так, как если бы N было равно 32. Двоичные разряды слева заполняются в соответствии с состоянием сигнала бита 31 (который является битом знака двойного целого числа), то есть они заполняются нулями, если число является положительным, и единицами, если число является отрицательным. Результат операции сдвига может быть просмотрен на выходе OUT. Операция, запускаемая этой командой, всегда сбрасывает биты CC 0 и OV слова состояния в 0, если N не равно 0. ENO имеет такое же состояние сигнала, как EN.
Блок LAD | Параметры | Тип данных | Область памяти | Описание |
![]() |
EN | BOOL | I, Q, M, D, L | Разрешающий вход |
ENO | BOOL | I, Q, M, D, L | Разрешающий выход | |
IN | DINT | I, Q, M, D, L |
Значение, подвергаемое сдвигу | |
N | WORD | I, Q, M, D, L | Количество двоичных разрядов, на которое происходит сдвиг | |
OUT | DINT | I, Q, M, D, L | Результат операции сдвига |
Пример и биты слова состояния сдвига вправо двойного целого числа
Команды циклического сдвига
Циклический сдвиг используется для того чтобы выполнить циклический сдвиг всего содержимого входа IN бит за битом влево или вправо. Освобождаемые разряды заполняются состояниями сигналов тех битов, которые выталкиваются из содержимого входа IN. Число, которым вы снабжаете входной параметр N, определяет число битов, на которое происходит циклический сдвиг. В зависимости от команды циклический сдвиг происходит через бит CC 1 слова состояния (см. раздел 1.4). Бит CC 0 слова состояния сбрасывается в 0.
Возможно выполнить следующие команды:
- Циклический сдвиг двойного слова влево
- Циклический сдвиг двойного слова вправо
Циклический сдвиг влево двойного слова
Эта команда циклически сдвигает влево бит за битом все содержимое входа IN. Вход N определяет количество битов, на которое происходит сдвиг. Если N больше, чем 32, то двойное слово циклически сдвигается на количество разрядов, равное ((N-1) по модулю 32) +1). Двоичные разряды справа заполняются состояниями сигналов циклически сдвигаемых битов. Результат операции циклического сдвига может быть просмотрен на выходе OUT.
Операция, запускаемая этой командой, всегда сбрасывает биты CC 0 и OV слова состояния в 0, если N не равно 0. ENO имеет такое же состояние сигнала, как EN.
Блок LAD | Параметры | Тип данных | Область памяти | Описание |
![]() |
EN | BOOL | I, Q, M, D, L | Разрешающий вход |
ENO | BOOL | I, Q, M, D, L | Разрешающий выход | |
IN | DWORD | I, Q, M, D, L |
Значение, подвергаемое циклическому сдвигу | |
N | WORD | I, Q, M, D, L | Количество двоичных разрядов, на которое происходит сдвиг | |
OUT | DWORD | I, Q, M, D, L | Результат операции циклического сдвига |
Пример и биты слова состояния циклического сдвиг влево двойного слова
Циклический сдвиг вправо двойного слова
Эта команда циклически сдвигает вправо бит за битом полное содержимое входа IN. Вход N определяет количество битов, на которое происходит сдвиг. Значение N может располагаться между 0 и 31. Если N больше, чем 32, то двойное слово циклически сдвигается на количество разрядов, равное ((N-1) по модулю 32) +1). Двоичные разряды слева заполняются состояниями сигналов циклически сдвигаемых битов. Результат операции циклического сдвига может быть просмотрен на выходе OUT.
Блок LAD | Параметры | Тип данных | Область памяти | Описание |
![]() |
EN | BOOL | I, Q, M, D, L | Разрешающий вход |
ENO | BOOL | I, Q, M, D, L | Разрешающий выход | |
IN | DWORD | I, Q, M, D, L |
Значение, подвергаемое циклическому сдвигу | |
N | WORD | I, Q, M, D, L | Количество двоичных разрядов, на которое происходит сдвиг | |
OUT | DWORD | I, Q, M, D, L | Результат операции циклического сдвига |
Пример и биты слова состояния циклического сдвига вправо двойного слова
<--Предыдущая статья | Следующая статья--> |