1

抱歉,如果这是重复的,我找不到我想要的。

我有一个字节的当前值:

00110001 一个

我必须写另一个值:

10001001 B

但在第二个字节中只有一些位是相关的。相关位是该位中带有 1 的位

11000000℃

最后一个字节在 C==1 的位上是 B,在 C==0 的位上是 A。如果没有 if 语句,我怎么能做到这一点?

答案是 D 10110001

4

2 回答 2

7

掩蔽和结合:

finalByte = (B & C) | (A & ~C);

分解它是如何工作的 - 结果B & C是一个字节,其中包含设置位的所有位BC正常的屏蔽操作)。 A & ~C产生一个字节,其中的所有AC都被清除 - 因此是~补码操作。将|两者组合成您要查找的最后一个字节。

于 2013-07-16T14:27:06.467 回答
5
(B & C) | (A & ~C)

第一个表达式只保留BwhereC设置的位;第二个只保留未设置A位;和逻辑 or 结合这两个位集来给出你想要的结果。C

于 2013-07-16T14:28:43.170 回答