Kat*_*atu 1 c bit-manipulation
对不起,如果这是重复,我找不到我想要的.
我有一个字节的当前值:
00110001 A
我必须写另一个值:
10001001 B.
但在第二个字节中只有一些位是相关的.相关位是该位中的一位
11000000 C
最后一个字节在C == 1的位上是B,在C == 0的位上是A. 如果没有if语句我怎么能这样做?
答案是D 10110001
面具和组合:
finalByte = (B & C) | (A & ~C);
Run Code Online (Sandbox Code Playgroud)
为了分解它B & C是如何工作的 - 结果是一个包含所有位的B位的字节C(正常的屏蔽操作). A & ~C产生一个字节,其中所有A位C都被清除 - 因此~补码操作.在|两成你正在寻找的最后一个字节联合收割机.
(B & C) | (A & ~C)
Run Code Online (Sandbox Code Playgroud)
第一个表达式只保留Bwhere C的设置位; 第二保持的唯一的位A,其中C被不设置; 和逻辑或组合这两个位集来给出你想要的结果.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |