Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 异或移位的意义_C++_Bit_Bit Shift_Xor - Fatal编程技术网

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你能提到算法的名称吗?