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!