Тема: Блок Shift(16)
Показать сообщение отдельно
Старый 01.06.2021, 12:00   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 174
Благодарил(а): 15 раз(а)
Поблагодарили: 665 раз(а) в 607 сообщениях
По умолчанию Ответ: Блок Shift(16)

Цитата:
Сообщение от Wowchik Посмотреть сообщение
Большинство, наверное, подумает, что это элементарные вещи, которые надо решать наедине с кнопкой F1. Но я не смог) Мне кажется, что блок Shift(16) предвзято относится к единицам, предпочитая им нули. Возможно борется с гендерным неравенством. При сдвиге вправо или влево освобождающиеся разряды заполняются нулями в количестве Shift, а единицами только в количестве один. Наверное, в начале вход Shift был логическим, а потом его улучшили до целого..
Лоджик 3 33 233
Да, всё так. Этот блок всегда так работал - заполнение корректно только при сдвиге на 1.

Вопрос можно решить комбинацией шифта или SHR/SHL с OR(16), объединяющим выход шифта и мультиплексор, на котором набрать заполнение: нулевой вход 0, первый вход 1b, второй 11b и так далее до 15.

Если нужно два направления, то используйте два мультиплексора, каждый на своё направление.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием