在64位数字中,XOR高32位,低32位

时间:2011-06-16 11:16:32

标签: c++ algorithm

在64位数字中如何异或高阶32位,低阶32位。 谢谢

4 个答案:

答案 0 :(得分:9)

(v & 0xffffffff) ^ ((v >> 32) & 0xffffffff)

答案 1 :(得分:1)

只是为了踢,这是另一种解决方案。已经给出的那个可能是要走的路。

uint32_t* number32;
uint64_t number64 = 0xffff1111ffffffff;
uint32_t xorValue;

number32 = (uint32_t*)&number64;
xorValue = number32[0]^number32[1];

答案 2 :(得分:0)

uint32_t hi_low_xor(uint64_t x) {
  return static_cast<uint32_t>(x) ^ static_cast<uint32_t>(x >> 32);
}

答案 3 :(得分:0)

如果要将结果存储在低32位:

(v & 0xffffffff) ^ ((v >> 32))

如果要将结果存储为更高的32位:

((v & 0xffffffff) ^ ((v >> 32))) << 32