将A中的所有位设置在给定的第L个位置到第R个位置之间的B中

时间:2016-06-01 17:27:07

标签: bit-manipulation

设置在给定的第L个位置到第R个位置之间的另一个数字B的二进制表示中设置的数字A的二进制表示中的所有位。 例如:
    A = 12(1100)     B = 11(1011)且L = 2,R = 3(位置从1开始);最后是     A = 14(1110){将A的第3位设为B的第3位为1}。

可以简单地将A和B转换为二进制表示,并在给定范围内设置B中设置的A位。

有没有更方便有效的方法呢?

1 个答案:

答案 0 :(得分:1)

使用按位运算符: A | ((1 << R) - (1 << (L-1)) & B)

说明:右移1位R位以获得2^R。按2^(L-1)减去它,以获得包含1L之间所有R的数字。按位 - 并使用B获取B的位掩码。按位或设置A位。

Demo