Битовые операции - C (СИ) (148905)
Формулировка задачи:
Почему то ничего красивого в голову не приходит. Помогите написать на C
На Verilog
где out[i], in[i] - i-ые биты
out[0] = in[7]; out[1] = in[0] ^ in[7]; out[2] = in[1] ^ in[7]; out[3] = in[2]; out[4] = in[3]; out[5] = in[4]; out[6] = in[5]; out[7] = in[6];
out, in
, ^ -XOR
Решение задачи: «Битовые операции»
textual
Листинг программы
out = ((in << 1) | (in >> 7)) ^ ((in >> 7) * 0x06);
Объяснение кода листинга программы
in
- входное значение, вероятно, представляющее собой байт (8 бит).out
- выходное значение, вероятно, также представляющее собой байт (8 бит).(in << 1)
- сдвиг входного значения на 1 позицию влево. Это означает, что самый старший бит становится самым младшим, а второй старший бит становится старшим битом.(in >> 7)
- сдвиг входного значения на 7 позиций вправо. Это означает, что самый младший бит становится самым старшим битом.|
- операторлогическое ИЛИ
, который возвращает 1, если хотя бы один из его операндов равен 1, и 0 в противном случае.(in >> 7) * 0x06
- сдвиг входного значения на 7 позиций вправо, затем умножение на 0x06 (вероятно, это значение 6 в шестнадцатеричной системе счисления).^
- операторисключающее ИЛИ
, который возвращает 1, если только один из его операндов равен 1, и 0 в противном случае.(in << 1) | (in >> 7)
- выражение, состоящее из сдвига на 1 позицию влево, сдвига на 7 позиций вправо, операциилогическое ИЛИ
и операцииисключающее ИЛИ
.out
- результат вычисления выражения, который будет сохранен в переменнойout
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д