Operadores bit a bit AND y XOR (dos operadores poco comunes pero importantes en Python)

Dos operadores poco comunes pero importantes en Python

Operadores bit a bit AND y XOR

**& Operador AND bit a bit: ** se convierte en binario, cada bit se opera por separado, cada bit es igual a 1, y diferente es 0

**^Operador XOR: **0 y cualquier número se convertirá en ese número (binario), cualquier número y él mismo se convertirán en 0 (binario)

El XOR directo de dos números es convertir a dos números binarios para la operación, el resultado específico depende de la operación (cada bit es XOR, lo mismo es 0, la diferencia es 1, que es exactamente lo contrario de la regla de operación AND bit a bit !)

Nota: antes de la operación XOR de la matriz de caracteres, debe transcodificarse a código ascii (use el método charCodeAt en js)

Antes de la operación XOR, la cadena debe dividirse en una matriz de caracteres y luego transcodificarse a código ASCII.

Ejemplo de algoritmo

Solo un número aparece solo en una matriz y los demás aparecen en pares. Busque este número.

Todos primero piensan en atravesar la matriz y luego realizar varias operaciones, pero aquí se recomienda un método más eficiente: colocar la matriz

Todos los elementos del grupo se someten a XOR de nuevo, y el resultado final es el número que aparece solo.

Por ejemplo elementos de matriz: 1 2 4 2 1.

1^2 = 3 (0001 ^ 0010 = 0011)
3^4 = 7 (0011 ^ 0100 = 0111)
7^2 = 5 (0111 ^ 0010 = 0101)
5^1 = 4 (0101 ^ 0001 = 0100)

el resultado final es 4

código:

#include<stdio.h>
#include<windows.h>
int main()
{
	int a[] = { 1, 2, 3, 4, 5, 4, 3, 2, 1 };
	int len = sizeof(a) / sizeof(a[0]);
	int i=1;
	for (; i < len; i++){
		a[0] ^= a[i];
	}
	printf("多余的数是%d\n", a[0]);
	system("pause");
	return 0;
}

Comprensión: porque cualquier número XOR en sí mismo se convertirá en 0, y 0 XOR cualquier número se convertirá en ese número

Luego, cuando estamos calculando, podemos considerar el resultado obtenido por XOR como total, luego, cuando el total se encuentra nuevamente con el mismo elemento, este elemento se restará, lo que equivale a no procesar este elemento.

¡Entonces los elementos que no se procesan en pares serán el valor de salida final!

Supongo que te gusta

Origin blog.csdn.net/m0_58768224/article/details/129796580
Recomendado
Clasificación