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