更换位范围

6 boolean-logic mask bit

CS中的任何二年级学生应该能够回答什么,但我似乎无法绕过它......

我有一组位,我需要用不同的集替换一些位.在一个简化的例子中:

10101010 - 原始位设置

00001111-显示替换位置的掩码

00001100 - 新的位值

10101100 - 结果位设置

另一个例子:

10101010 - 原始位设置

00110011 -mask

11111111 - 新的比特值

10111011 - 结果位设置

通过迭代比特来做到这一点是微不足道的.

是否可以使用布尔逻辑(AND,OR等)来做到这一点?

Phi*_*sse 10

result = (original & ~mask) | (newbits & mask)
Run Code Online (Sandbox Code Playgroud)

"&〜mask"部分确保在|之前将这些位清除为0 部分.

"&mask"部分确保仅使用newbits中的适当位.