Я выполняю побитовую функцию для 32- и 64-разрядных целых чисел и застрял при написании метода (setValueAt(index, newState)
), который устанавливает бит по индексу index
в 1
, если newState
равно true
или 0
, если newState
равно false
. Какую побитовую функцию я могу использовать для выполнения следующих операций с той же скоростью, что и AND, OR, XOR и т. Д .? Я не решаюсь использовать метод обнаружения, а затем XOR, если бит имеет быть измененным, так как это может занять слишком много времени; этот метод должен вызываться быстро, возможно, сотни раз подряд в зависимости от действий пользователя.
===setValueAt(3, false)===
0101 0001
? 0000 1000
==============
0101 0001
0101 1001
? 0000 1000
==============
0101 0001
Если это поможет, ниже приведена таблица истинности желаемого эффекта:
|0|1
-+-+-
0|0|0
-+-+-
1|1|0