Resumen del uso de operaciones de bits

Prefacio

Para mejorar la eficiencia al cepillar Leetcode, muchas operaciones se pueden optimizar utilizando operaciones de bits. Este artículo se utiliza para recopilar y resumir las operaciones relacionadas con las operaciones de bits. Se puede ver el conocimiento básico de las operaciones de bits: el portal .

contenido

Darse cuenta de las cuatro aritméticas

¡¡Esto es demasiado duro, y mira en la línea, y si escribes código para que sea demasiado exagerado !! Fight (O - ) ~ '' ☆ ☆ ミ ミ

Más una operación

Código convencional:

int a = 1;
a += 1;

Código de operación de bit:

int a = 1;
a = -~a;

Menos una operación

int a = 1;
a -= 1;

Código de operación de bit:

int a = 1;
a = ~-a;

Multiplicar por 2 operación

Esta operación se puede realizar siempre que se multiplique por la potencia de 2 y se desplace hacia la izquierda tanto como se multiplique la potencia de 2.
Código convencional:

b = a * 2;

Código de operación de bit:

b = a << 1;

Multiplica por 2 y suma 1 operación

Código convencional:

b = a * 2 + 1;

Código de operación de bit:

b = a << 1 | 1;

Dividir por 2 operación

Esta operación se puede realizar siempre que se divida por la potencia de 2 y se desplace hacia la derecha tanto como se divida la potencia de 2.
Código convencional:

b = a / 2;

Código de operación de bit:

b = a >> 1;

Operación del resto (módulo)

Nota: El divisor debe ser una potencia de 2.

Código convencional:

a = a % 4;

Código de operación de bit:

a = a & (4 - 1);

Determinar la paridad

Código convencional:

if(a % 2);//奇数

if(!(a % 2));//偶数

Código de operación de bit:

if(a & 1);//奇数

if(!(a & 1));//偶数

Intercambia dos números

Código convencional:

int a = 1,b = 2,temp;
temp = a;
a = b;
b = temp;

Código de operación de bit:

int a = 1,b = 2;
a ^= b;
b ^= a;
a ^= b;

Conversión de caso

De hecho, ¡esto no es magia!

Utilice u operación |y para 空格convertir caracteres ingleses a minúsculas

('a' | ' ') = 'a';
('A' | ' ') = 'a';

Utilice la operación AND &y para 下划线convertir caracteres en inglés a mayúsculas

('b' & '_') = 'B'
('B' & '_') = 'B'

Uso de la operación XOR ^, y 空格para caracteres en inglés, invertir mayúsculas y minúsculas

('d' ^ ' ') = 'D'
('D' ^ ' ') = 'd'

XOR

XOR (^)

  • Si hacemos la operación ^ en 0 y binario, todavía obtenemos este bit binario.
    0 ⨁ 0 = 0, 0 ⨁ 1 = 1 0 \ bigoplus 0 = 0,0 \ bigoplus 1 = 100=0 ,01=1
  • Si hacemos la operación ^ en el mismo binario, el resultado devuelto es 0
    1 ⨁ 1 = 0, a ⨁ a = 0 (a 1 \ bigoplus 1 = 0, a \ bigoplus a = 0 (a11=0 ,aa=0 ( a puede ser cualquier número)))
  • ^ Satisfacer las leyes conmutativas y asociativas
    a ⨁ b ⨁ a = (a ⨁ a) ⨁ b = 0 ⨁ b = ba \ bigoplus b \ bigoplus a = (a \ bigoplus a) \ bigoplus b = 0 \ bigoplus b = baBa=( una )B=0B=b
    Temas relacionados con el código de lectura:
    136. El número que aparece solo una vez
    389. Encuentra la diferencia

datos

Aritmética de bits significa multiplicar por 2 y multiplicar por 2 + 1
artículos del algoritmo:
Operaciones aritméticas de bits básicas Hacks de giro de bits

posdata

¡Actualizada continuamente!

Supongo que te gusta

Origin blog.csdn.net/XZ2585458279/article/details/109535828
Recomendado
Clasificación