Как я могу превратить число 0-8 в 0-8-ую двоичную позицию в C ++? - PullRequest
1 голос
/ 04 мая 2019

Я пытаюсь использовать целые числа 1-8 для представления двоичных позиций D0-D7.
Я в недоумении, как это преобразовать. Я пытался взять самый значительный бит, но в этой ситуации это не сработало ..
Любые мысли или указатели на ресурсы по этой теме? Это для адресации на OLED-экране.

Я пытаюсь придумать умное решение в C ++. Я мог бы просто сделать таблицу переключателей, но я подумал, что должен быть более крутой способ сделать это с помощью битовых манипуляций!

Например

int x = 7
y = convert(x)

if (y == 0b01000000)
print("Success!!")

Спасибо за любую помощь !!

1 Ответ

0 голосов
/ 04 мая 2019

Что вам нужно, так это сдвиг битов - переместите все биты в вашей переменной влево или вправо. C ++, среди других языков, использует оператор << для сдвига битов влево. Вы можете найти другие побитовые операторы полезными для Вашего приложения.

Используя это, вы можете заменить convert(x) на 1 << (x-1). Это изменяет целые числа от 1 до 8 (включительно) на 0-7-ю битовую позицию (включительно).

...