Заменить младший бит поразрядными операциями

Каков оптимальный способ заменить младший значащий бит байта предоставленным битом? ?

Я знаю, как выполнять проверку и сравнение последнего бита (например, используя функцию posix ffs ()), но я хочу знать, есть ли решения с более высокой производительностью, не проверяя, равен ли заменяющий бит 0 или 1.

Пример написан на python как псевдокод, но я буду реализовывать рабочий алгоритм на 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'

Очевидно, что оператор может быть набором операций, но я ищу оптимальный (самый быстрый) метод.

7
задан Emilio 19 May 2011 в 13:45
поделиться