2013-07-16 179 views
1

对不起,如果这是重复的,我找不到我想要的。C位操作相关位

我有一个字节的当前值:

00110001一

而且我必须写另一个值:

10001001乙

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

11000000Ç

最后一个字节将是B上的比特,其中C == 1和A的比特,其中C == 0。 如何用if if语句做到这一点?

答案是d 10110001

+2

'if'不是一个循环,它是一种分支语句。无论如何,你在寻找[按位运算符](http://en.wikipedia.org/wiki/Bitwise_operations_in_C#Bitwise_AND_.22.26.22)? – 2013-07-16 14:27:03

+2

(B&C)| (A&〜C) – jonhopkins

+0

没有“如果循环”这样的事情。你可能是指“如果陈述”。 –

回答

7

面膜,并结合:

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

要打破它是如何工作 - 的B & C结果是包含所有的B位其中C位的字节设置(正常掩蔽操作)。 A & ~C会产生一个字节,其中所有的位为A,其中C的位被清零 - 因此为~补充操作。 |将这两者结合到您要查找的最终字节中。

5
(B & C) | (A & ~C) 

第一个表达式只保留其中C被设置的B比特;第二个只保留A的位,其中C而不是集;逻辑或者将这两个比特组合起来以给出你想要的结果。