English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El operador de bits de Java tiene un operador llamado XOR, representado por el símbolo (^), y sus reglas de cálculo son: si los bits de los operandos son iguales, el resultado es 0, y si son diferentes, el resultado es1。以下是一个例子:
public class TestXOR{ public static void main(String[] args){ int i = 15, j = 2; System.out.println("i ^ j = " + (i ^ j)); } }
El resultado de la ejecución es: i ^ j =13.
Análisis del programa anterior, i =15Convertido a binario es1111,j =2Convertido a binario es 0010,De acuerdo con las reglas de XOR, el resultado es1101,Convertido a decimal es13.
Utilizando esta regla, podemos aplicar de manera flexible a ciertos algoritmos. Por ejemplo, supongamos que hay2K+1número, de los cuales hay2Para encontrar el número diferente entre k números iguales, por ejemplo:2、3、4、4、3、5、6、6、5。Podemos escribir así utilizando el operador de XOR:
public class TestXOR{ public static void main(String[] args){ int[] array = {2,3,4,4,3,5,6,6,5}; int v = 0; for (int i = 0; i < array.length; i++) { v ^= array[i]; } System.out.println("El número que solo aparece una vez es:\ + v); } }
El resultado es: el número que solo aparece una vez es2.
Esos somos nosotros que aprovechamos las reglas del operador de XOR para obtener que un número XOR con 0 es él mismo, y un número XOR con él mismo es 0.
La forma de cálculo anterior: v =2^3^4^4^3^5^6^6^5;
Según la ley de cambio y las reglas anteriores
Se puede deducir el número que solo aparece una vez (debe cumplir con los requisitos previos)2k números iguales)
Resumen
Esto es todo el contenido del análisis del código de problemas de XOR en Java que se menciona en este artículo, espero que sea útil para todos. Los amigos interesados pueden continuar leyendo otros temas relacionados en este sitio, y si hay deficiencias, por favor déjenos un mensaje. Gracias por el apoyo de los amigos a este sitio!
Declaración: El contenido de este artículo se obtiene de la red, pertenece a los propietarios originales, se contribuye y carga por los usuarios de Internet de manera autónoma. Este sitio no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @ para denunciar, y proporcione evidencia relevante. Si se verifica, este sitio eliminará inmediatamente el contenido sospechoso de infracción de derechos de autor.)