English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Code analysis of XOR problem in Java

Dans les opérateurs de bit de Java, il y a un opérateur appelé XOR, représenté par le symbole (^), et ses règles de calcul sont : si les bits des deux opérandes sont identiques, le résultat est 0, sinon le résultat est1Voyons un exemple :

public class TestXOR{
	public static void main(String[] args){
		int i = 15, j = 2;
		System.out.println("i ^ j = ") + (i ^ j));
	}
}

Le résultat de l'exécution est : i ^ j =13.

Analysons le programme ci-dessus, i =15transformé en binaire est1111,j =2transformé en binaire est 0010selon les règles de l'opérateur XOR, nous obtenons1101transformé en décimal est13.

Nous pouvons utiliser cette règle de manière flexible dans certaines algorithmes. Par exemple, supposons que2K+1nombre, dont2Il faut trouver le nombre différent parmi k nombres identiques, par exemple :2、3、4、4、3、5、6、6、5Nous pouvons écrire ainsi en utilisant l'opérateur 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("Le nombre qui apparaît une seule fois est : ") + v);
	}
}

Le résultat est : le nombre qui apparaît une seule fois est2.

Nous utilisons astucieusement les règles de l'opérateur XOR pour obtenir le principe que le résultat d'un nombre XOR avec 0 est le nombre lui-même, et le résultat d'un nombre XOR avec lui-même est 0.

La méthode de calcul ci-dessus : v =2^3^4^4^3^5^6^6^5;

selon la loi de commutativité et les règles ci-dessus

on peut en déduire le nombre qui apparaît une seule fois (sous réserve de certaines conditions préalables)2k valeurs identiques)

Résumé

Voici la totalité de l'analyse du code de la question XOR dans Java, j'espère que cela aidera les autres. Les amis intéressés peuvent continuer à consulter d'autres sujets pertinents sur ce site. Si vous trouvez des lacunes, n'hésitez pas à laisser un commentaire. Merci de votre soutien à ce site !

Déclaration : Le contenu de cet article est tiré d'Internet, propriété de ses auteurs respectifs, mis en ligne par les utilisateurs d'Internet de manière volontaire. Ce site ne détient pas de droits de propriété, n'a pas été édité par l'homme, et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois confirmée, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)

You may also like