2013-07-16 125 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而不是集;邏輯或者將這兩個比特組合起來以給出你想要的結果。