Emi*_*lio 7 binary bit-manipulation bit-shift boolean-operations
使用提供的位替换字节的最低有效位的最佳方法是什么?
我知道如何检查和比较最后一位(使用例如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'
Run Code Online (Sandbox Code Playgroud)
显然,运算符可以是一组运算,但我正在寻找最优(最快)的方法.
NPE*_*NPE 15
n & ~1n用零替换最低有效位; n | 1,一个.
要替换LSB b,b可以使用0或1 (n & ~1) | b.
要更换k用个位b(这里k=0代表的是LSB) (n & ~(1 << k)) | (b << k).
| 归档时间: |
|
| 查看次数: |
8205 次 |
| 最近记录: |