很抱歉,如果这是重复的,我找不到我想要的内容。
我有一个字节的当前值:
00110001 A
我必须写另一个值:
10001001 B
但在第二个字节只有一些位 是相关的。相关位 是这个位的一个
11000000 C
最后一个字节在C == 1的位上为B,在C == 0的位上为A. 如果没有if语句我怎么能这样做?
答案是D 10110001
答案 0 :(得分:7)
掩饰和组合:
finalByte = (B & C) | (A & ~C);
为了分解其工作原理 - B & C
的结果是一个字节,其中包含B
的所有位,其中C
的位被设置(正常的屏蔽操作)。 A & ~C
产生一个字节,其中A
的所有位都被清除C
的位 - 因此~
补码操作。 |
将这两者组合成您正在寻找的最后一个字节。
答案 1 :(得分:5)
(B & C) | (A & ~C)
第一个表达式仅保留设置B
的{{1}}位;第二个只保留C
的位A
不设置;和逻辑或组合这两个位集来给出你想要的结果。