Инвертировать бит в позиции с номером n ячейки А, если в ячейке В под номерами m, m+1 стоит последовательность из единиц
Есть такое задание, нужно инвертировать бит в позиции с номером n ячейки А, если в ячейке В под номерами m, m+1 стоит последовательность из единиц в c++.
При этом ячейки A и B - имитация 16 разрядных регистров. Нумерация позиций (разрядов) ячеек с 0 – 15. Желательно в коде использовать команды "unsigned" и "void". Заранее спасибо огромное за помощь!!
Ответы (2 шт):
чтобы определить чему равен n-ый бит некоторого числа value необходимо выполнить
value & (1 << n)
если n-ый бит был равен 0, то значение описанной выше операции будет равно нулю иначе будет ненулевым (будет равно 1 << n ну или 2^n)
чтобы установить n-ый бит (установить бит в 1) необходимо выполнить:
value | (1 << n)
чтобы сбросить n-ый бит (установить бит в 0) необходимо выполнить:
value & (~(1 << n))
этого достаточно для выполнения задачи