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 = 10⨁0=0 ,0⨁1=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 (a1⨁1=0 ,a⨁a=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 = ba⨁B⨁a=( un⨁a )⨁B=0⨁B=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!