C位操作相关位
抱歉,如果这是重复的,我找不到确切的我想要的 我有一个字节的当前值: 00110001 A 我必须写另一个值: 10001001b 但在第2字节中只有一些位 这些都是相关的。相关比特 这个位子上有一个吗 11000000摄氏度 最后一个字节将是C==1的位上的B和C==0的位上的A。 如果没有if语句,我怎么做 答案是D 10110001掩模和组合: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的所有位,其中设
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可能是他的意思:没有如果和循环,谢谢大家快速正确的回答。