Каков оптимальный способ замены наименее значимого бита байта предоставленным битом?
Я знаю, как проверять и сравнивать последний бит (используя, например, функцию posix ffs()), но я хочу знать, есть ли решения с лучшей производительностью, не проверяя, является ли замена бита 0 или 1.
Пример написан на питоне в виде псевдокода, но я реализую рабочий алгоритм на C:
>>> bin(0b1) # bit is '0b1'
>>> bin(128) # byte is '0b10000000'
>>> bin(129) # byte is '0b10000001'
>>> bin(128 OPERATOR 0b1) # Replace LSB with 1
'0b10000001'
>>> bin(128 OPERATOR 0b0) # Keep LSB at 0
'0b10000000'
>>> bin(129 OPERATOR 0b1) # Keep LSB at 1
'0b10000001'
>>> bin(129 OPERATOR 0b0) # Replace LSB with 0
'0b10000000'
Очевидно, оператор может быть набором операций, но я ищу оптимальный (самый быстрый) метод.