C++ 异或移位的意义
我遇到了一个算法,它使用了大量的异或移位,如下所示:C++ 异或移位的意义,c++,bit,bit-shift,xor,C++,Bit,Bit Shift,Xor,我遇到了一个算法,它使用了大量的异或移位,如下所示: std::uint16_t a = ... std::uint16_t b = a ^ ( a >> 4 ) 我读到XOR用于所有类型的好东西,比如查找奇偶校验、确定奇偶计数等。所以我想知道:这个操作(本身)有一定的意义吗?这是一种常见的模式吗?或者它只是这个算法的一部分 不,我不是在说。让我们看看它在给定输入0xIJKL时产生了什么: 0xIJKL ^ 0x0IJK -------- 0xI??? 对我来说,这似乎不
std::uint16_t a = ...
std::uint16_t b = a ^ ( a >> 4 )
我读到XOR用于所有类型的好东西,比如查找奇偶校验、确定奇偶计数等。所以我想知道:这个操作(本身)有一定的意义吗?这是一种常见的模式吗?或者它只是这个算法的一部分
不,我不是在说。让我们看看它在给定输入0xIJKL时产生了什么:
0xIJKL
^ 0x0IJK
--------
0xI???
对我来说,这似乎不是很有意义,但这种模式似乎被用作许多奇偶校验位旋转的子步骤。例如,用于计算字的奇偶校验位的旋转(从):
让我们看看它在给定输入0xIJKL时产生了什么:
0xIJKL
^ 0x0IJK
--------
0xI???
对我来说,这似乎不是很有意义,但这种模式似乎被用作许多奇偶校验位旋转的子步骤。例如,用于计算字的奇偶校验位的旋转(从):
我不相信这是一种常见的模式。还有更多的上下文吗?你说的是
a^(a>>4)
,还是仅仅是a>>4
?全部内容@cigienI不能说我见过那么多。它保证做的唯一一件事是不修改前4位,但其余的位取决于a
。我认为这是特定于算法的。@SamVanDonut你能提到算法的名称吗?我不相信这是一种常见的模式。还有更多的上下文吗?你说的是a^(a>>4)
,还是仅仅是a>>4
?全部内容@cigienI不能说我见过那么多。它保证做的唯一一件事是不修改前4位,但其余的位取决于a
。我想说这是特定于算法的。@SamVanDonut你能提到算法的名称吗?