Operadores bit a bit AND e XOR (dois operadores incomuns, mas importantes em Python)

Dois operadores incomuns, mas importantes em Python

Operadores AND e XOR bit a bit

Operador AND de **& bit a bit: ** é convertido em binário, cada bit é operado separadamente, cada bit é igual a 1 e diferente é 0

**^ Operador XOR: **0 e qualquer número se tornará esse número (binário), qualquer número e ele mesmo se tornará 0 (binário)

O XOR direto de dois números é converter em dois números binários para operação, o resultado específico depende da operação (cada bit é XOR, o mesmo é 0, a diferença é 1 e a regra da operação AND bit a bit é exatamente o oposto !)

Obs: Antes da operação XOR do array de caracteres, ele deve ser transcodificado para código ascii (use o método charCodeAt em js)

Antes da operação XOR, a string deve ser dividida em uma matriz de caracteres e, em seguida, transcodificada para código ascii

Exemplo de algoritmo

Apenas um número aparece sozinho em uma matriz e os outros aparecem em pares. Encontre este número.

Todo mundo primeiro pensa em percorrer o array e depois executar várias operações, mas um método mais eficiente é recomendado aqui - colocar o array

Todos os elementos do grupo são XORed novamente, e o resultado final é o número que aparece sozinho.

Por exemplo 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)

O resultado final é 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;
}

Entendimento: Como qualquer número XOR se tornará 0 e 0 XOR qualquer número se tornará esse número

Então, quando estamos calculando, podemos considerar o resultado obtido por XOR como total, então quando o total encontrar o mesmo elemento novamente, esse elemento será subtraído, o que equivale a não processar esse elemento

Então os elementos que não são processados ​​em pares serão o valor de saída final!

Acho que você gosta

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