programadores de oro de la entrevista - 05.07 apareamiento intercambio preguntas de la cara (operación de bit)

1. Tema

intercambio emparejado. Programación, el cambio a un bit impar número entero y el bit incluso, trate de usar menos instrucciones (es decir, los bits 0 y 1 de intercambio de bits, el intercambio Bit 2 Bit 3, y así sucesivamente).

示例1:
 输入:num = 2(或者0b10)
 输出 1 (或者 0b01)
 
示例2:
 输入:num = 3
 输出:3
 
提示:
num的范围在[0, 2^30 - 1]之间,不会发生整数溢出。

Fuente: estancia botón (LeetCode)
enlace: https: //leetcode-cn.com/problems/exchange-lcci
propiedad de la deducción de todas las redes. reimpresión comercial póngase en contacto con la reimpresión autorizada oficial, no comercial por favor indique la fuente.

2. Resolución de Problemas

  • 01, respectivamente, alternando número binario, el bit de paridad de extracción digital original
  • Un poco incluso a la derecha, un poco extraño dejó
  • Luego |de combinación
class Solution {
public:
    int exchangeBits(int num) {
        int even = 0b10101010101010101010101010101010;//0xAAAAAAAA
        int odd =   0b1010101010101010101010101010101;//0x55555555
        return ((num&even)>>1) | ((num&odd)<<1);
    }
};

Aquí Insertar imagen Descripción

Publicados 763 artículos originales · ganado elogios 985 · vistas 280 000 +

Supongo que te gusta

Origin blog.csdn.net/qq_21201267/article/details/105085996
Recomendado
Clasificación