1

Тема: Последовательные сдвиг влево и сдвиг вправо.

Всем привет) Сегодня натолкнулся на необычный эффект в симуляторе.

Судя по описанию, в результате побитовой операции сдвиг влево освободившиеся биты справа заполняются нулями. При сдвиге вправо биты слева тоже должна заполняться нулями.

Но если задать значение FF (8 бит в значении 1) и последовательно сделать сдвиг влево и сдвиг вправо, все биты оказываются заполнены единицами. Скрин из симулятора прилагаю - файл canny.jpg
При этом если сделать просто сдвиг направо из промежуточного занчения, то все слева заполняется нулями как положено - файл canny2.jpg

Разве так и должно быть? Скорее всего так получается из за 16-битного представления данных при расчетах.

Вложений в сообщении

canny.JPG, 246.62 кб, 877 x 555
canny.JPG 246.62 кб, скачивался 90 раз, последний раз 2023-04-11 

canny2.JPG, 247.83 кб, 873 x 558
canny2.JPG 247.83 кб, скачивался 91 раз, последний раз 2023-04-11 

2

Re: Последовательные сдвиг влево и сдвиг вправо.

Разве так и должно быть? Скорее всего так получается из за 16-битного представления данных при расчетах.

Совершенно верно. В языке CFD все использующиеся числовые данные являются 16-битными целыми неотрицательными числами в диапазоне от 0 до 65535. Результатом арифметических и побитовых операций будет числовое значение из указанного диапазона: https://canny.ru/docs/fbd/cfd/#sec--fbd-cfd-dannye

Наглядно представить результат операции сдвига вам поможет выбор двоичного (bin) представления данных в симуляторе: https://canny.ru/docs/cannylab/simulato … -znachenij

3

Re: Последовательные сдвиг влево и сдвиг вправо.

Константин, спасибо!