【发布时间】:2022-01-18 12:16:46
【问题描述】:
我正在尝试根据位掩码拆分字节。
考虑这两个字节(二进制中的 1000 为 short int):
11101000
00000011
还有这三个面具:
00000011
11111111
00111111
我要做的是根据提供的掩码将两个原始字节分成三个字节。
结果应该是:
00000000 第一个字节
11111010为第二个(原来的字节1和2因为掩码合并了)
00000000 为第三个(剩余位用零填充)
在 Java 或 C 中最简单的方法是什么?
【问题讨论】:
-
您需要了解按位运算符(
&和|)。但目前还不清楚哪个字节应该用什么来掩盖。 -
我知道如何使用位运算符。由于掩码,我试图以最简单的方式将第一个字节的一部分与第二个字节的一部分以正确的顺序合并。我知道这是一个简单的例子,但无论提供什么掩码,它都必须工作,所以我需要一些位移来调整正确的顺序。
-
掩码是什么意思?
-
您是在寻找通用解决方案,还是仅当掩码具有连续的解决方案时,或者最终只是连续的解决方案?您应该使用和/或/xor/shifts,还是可以使用
popcount和pdep之类的操作? -
@corir146 你需要给我们看一些例子。
标签: java c bit-manipulation mask bitmask