对不起,如果这是重复的,我找不到我想要的。C位操作相关位
我有一个字节的当前值:
00110001一
而且我必须写另一个值:
10001001乙
但在第二个字节中只有一些位 是相关的。中的相关位 是具有一个在该位的那些
11000000Ç
最后一个字节将是B上的比特,其中C == 1和A的比特,其中C == 0。 如何用if if语句做到这一点?
答案是d 10110001
对不起,如果这是重复的,我找不到我想要的。C位操作相关位
我有一个字节的当前值:
00110001一
而且我必须写另一个值:
10001001乙
但在第二个字节中只有一些位 是相关的。中的相关位 是具有一个在该位的那些
11000000Ç
最后一个字节将是B上的比特,其中C == 1和A的比特,其中C == 0。 如何用if if语句做到这一点?
答案是d 10110001
面膜,并结合:
finalByte = (B & C) | (A & ~C);
要打破它是如何工作 - 的B & C
结果是包含所有的B
位其中C
位的字节设置(正常掩蔽操作)。 A & ~C
会产生一个字节,其中所有的位为A
,其中C
的位被清零 - 因此为~
补充操作。 |
将这两者结合到您要查找的最终字节中。
(B & C) | (A & ~C)
第一个表达式只保留其中C
被设置的B
比特;第二个只保留A
的位,其中C
是而不是集;逻辑或者将这两个比特组合起来以给出你想要的结果。
'if'不是一个循环,它是一种分支语句。无论如何,你在寻找[按位运算符](http://en.wikipedia.org/wiki/Bitwise_operations_in_C#Bitwise_AND_.22.26.22)? – 2013-07-16 14:27:03
(B&C)| (A&〜C) – jonhopkins
没有“如果循环”这样的事情。你可能是指“如果陈述”。 –