什么是用提供位替换字节最低有效位的最佳方法?用位运算替换最低有效位
我知道该怎么做检查和最后一位比较(例如使用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'
显然,运营商可以是一组操作,但是我正在寻找最佳(最快)的方法。
如果我的替换位是0或1,我总是要检查。有一个'通用'操作符? – Emilio 2011-05-19 13:34:43
@Emilion:'(n&〜1)| b' – NPE 2011-05-19 13:36:23
lòl,完美。非常感谢。 – Emilio 2011-05-19 13:40:34