C位操作相关位

C位操作相关位,c,bit-manipulation,C,Bit Manipulation,抱歉,如果这是重复的,我找不到确切的我想要的 我有一个字节的当前值: 00110001 A 我必须写另一个值: 10001001b 但在第2字节中只有一些位 这些都是相关的。相关比特 这个位子上有一个吗 11000000摄氏度 最后一个字节将是C==1的位上的B和C==0的位上的A。 如果没有if语句,我怎么做 答案是D 10110001掩模和组合: finalByte = (B & C) | (A & ~C); 要分解其工作原理,B&C的结果是一个字节,包含B的所有位,其中设

抱歉,如果这是重复的,我找不到确切的我想要的

我有一个字节的当前值:

00110001 A

我必须写另一个值:

10001001b

但在第2字节中只有一些位 这些都是相关的。相关比特 这个位子上有一个吗

11000000摄氏度

最后一个字节将是C==1的位上的B和C==0的位上的A。 如果没有if语句,我怎么做

答案是D 10110001

掩模和组合:

finalByte = (B & C) | (A & ~C);
要分解其工作原理,
B&C
的结果是一个字节,包含
B
的所有位,其中设置了
C
(正常屏蔽操作)
A&~C
产生一个字节,其中
A
的所有位都被清除,
C
的位被清除,因此执行
~
补码操作。
|
将这两个字节组合成您要查找的最后一个字节。

屏蔽并组合:

finalByte = (B & C) | (A & ~C);
(B & C) | (A & ~C)
要分解其工作原理,
B&C
的结果是一个字节,包含
B
的所有位,其中设置了
C
(正常屏蔽操作)
A&~C
产生一个字节,其中
A
的所有位都被清除,
C
的位被清除,因此执行
~
补码操作。
|
将这两个字节组合成您要查找的最后一个字节

(B & C) | (A & ~C)
第一个表达式仅保留设置了
C
B
位;第二个仅保留
A
的位,其中
C
未设置;逻辑or组合这两个位集,得到你想要的结果


第一个表达式仅保留设置了
C
B
位;第二个仅保留
A
的位,其中
C
未设置;逻辑or组合这两个位集,得到您想要的结果。

如果
不是循环,那么它就是一种分支语句。不管怎么说,你是在找“如果循环”吗?没有“如果循环”这样的东西。你的意思可能是“如果语句”。@JonathonReinhart可能是他的意思:没有if和loop谢谢大家的快速正确回答。
如果
不是循环,它是一种分支语句。不管怎么说,你是在找“如果循环”吗?没有“如果循环”这样的东西。你的意思可能是“如果语句”。@JonathonReinhart可能是他的意思:没有如果和循环,谢谢大家快速正确的回答。