對不起,如果這是重複的,我找不到我想要的。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
沒有「如果循環」這樣的事情。你可能是指「如果陳述」。 –