XOR старшие 32 бита с младшими 32 битами в 64-битном числе - PullRequest
4 голосов
/ 16 июня 2011

В 64-битном числе Как выполнить XOR старшие 32 бита с младшими 32 битами. Спасибо

Ответы [ 4 ]

9 голосов
/ 16 июня 2011
(v & 0xffffffff) ^ ((v >> 32) & 0xffffffff)
1 голос
/ 16 июня 2011

Просто для удовольствия, вот другое решение.Один из приведенных уже, вероятно, путь.

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

number32 = (uint32_t*)&number64;
xorValue = number32[0]^number32[1];
0 голосов
/ 16 июня 2011

, если вы хотите сохранить результат в младших 32 битах:

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

, если вы хотите сохранить результат в старших 32 битах:

((v & 0xffffffff) ^ ((v >> 32))) << 32
0 голосов
/ 16 июня 2011
uint32_t hi_low_xor(uint64_t x) {
  return static_cast<uint32_t>(x) ^ static_cast<uint32_t>(x >> 32);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...