Explication détaillée de la signification des opérateurs ^, &, | et bit en JAVA

1. ^ (opérateur OR exclusif)

^ Est un opérateur binaire pour binaire. Règles de fonctionnement: Si deux valeurs binaires sont identiques dans le même bit, le bit du résultat est 0, sinon il vaut 1, comme 1011 & 0010 = 1001.

2. | (ou opérateur)

| Est un opérateur binaire pour binaire. Règles de fonctionnement: Si deux valeurs binaires ont au moins un 1 dans le même bit, le bit du résultat est 1, sinon il vaut 0, comme 1011 & 0010 = 1011.

3. & (et opérateur)

& Est un opérateur binaire pour binaire. Il convient de noter que && est un identifiant représentant "et" entre les conditions de jugement en java, & est un opérateur binaire, si deux valeurs binaires sont toutes les deux 1 dans le même bit, le bit dans le résultat est 1, sinon s'il vaut 0, on peut considérer que les deux sont vrais (1), et le résultat est également vrai (1), comme 1011 & 0110 = 0010.

& Il y a aussi une place plus importante, qui est également un problème courant dans les entretiens, c'est-à-dire que l'opérateur peut calculer le reste. Nous savons que la plus lente des quatre opérations arithmétiques est la division et que l’opération sur le reste est encore plus lente. Vous pouvez donc utiliser & pour trouver rapidement le reste de deux nombres. Prenons un exemple:

public ModTest{
    public static void main(String[] args){
        System.out.println(45 & 11);
        System.out.println(45 & 7);
    }
    /**result:3, 5*/
}

Étant donné deux valeurs de x et y, si vous voulez trouver le reste de x et y, vous n'avez besoin que de x & (y-1). Comme indiqué dans l'exemple ci-dessus, si vous voulez trouver le reste de 45 et 12 (45 et 8), vous n'avez besoin que de 45 et 11 (45 et 7).


Les trois opérateurs suivants sont des opérateurs au niveau du bit

>> x (constante): se déplace vers la droite de x bits (le sommet se déplace dans quelle direction), si le nombre est positif, le bit haut (le plus à gauche) est rempli de x zéros, s'il s'agit d'un nombre négatif, le haut bit est rempli de x One.

<< x (constante): déplacez x bits vers la gauche (le sommet se déplace dans quelle direction), quel que soit le bit le plus bas (le plus à droite) du nombre positif ou négatif, ajoutez x zéros.

<<<: Aucune représentation de ce type.

>>> x (constante): indique un décalage vers la droite non signé de x bits. Le soi-disant non signé est comparé à >> x. Après cette opération, quel que soit le bit haut (le plus à gauche) du nombre positif ou négatif est déplacé, 0 est ajouté.

4. << (opérateur de décalage gauche)

Exemple 1: -20 << 2

Code d'origine: 10000000 00000000 00000000 00010100

Code inverse: 11111111 11111111 11111111 11101011 (le bit de signe reste inchangé, les autres bits sont inversés)

Code complémentaire: 11111111 11111111 11111111 11101100 (code inverse + 1)

Décalez deux chiffres vers la gauche (ajoutez 0 aux deux chiffres à l'extrême droite)

Complément: 11111111 11111111 11111111 10110000

Code inverse: 11111111 11111111 11111111 10101111 (complément-1)

Code d'origine: 10000000 00000000 00000000 01010000 (le bit de signe reste inchangé, les autres bits sont inversés)

Résultat: -80

Exemple 2:20 << 2

Code d'origine (code inverse, code complémentaire): 00000000 00000000 00000000 00010100

Décalez deux chiffres vers la gauche (ajoutez 0 aux deux chiffres à l'extrême droite)

Code d'origine (code inverse, code complémentaire): 00000000 00000000 00000000 01010000

Résultats: 80

5. >> (opérateur de décalage vers la droite)

Exemple 1: -20 >> 2

Code d'origine: 10000000 00000000 00000000 00010100

Code inverse: 11111111 11111111 11111111 11101011 (le bit de signe reste inchangé, les autres bits sont inversés)

Code complémentaire: 11111111 11111111 11111111 11101100 (code inverse + 1)

Déplacez deux bits vers la droite (ajoutez 1 aux deux bits les plus à gauche)

Complément: 11111111 11111111 11111111 11111011

Code inverse: 11111111 11111111 11111111 11111010 (complément-1)

Code d'origine: 10000000 00000000 00000000 00000101 (le bit de signe reste inchangé, les autres bits sont inversés)

Résultat: -5

Exemple 2:20 >> 2

Code d'origine (code inverse, code complémentaire): 00000000 00000000 00000000 00010100

Déplacez deux bits vers la droite (ajoutez 0 aux deux bits les plus à gauche)

Code d'origine (code inverse, code complémentaire): 00000000 00000000 00000000 00000101

Résultat: 5

6. >>> (opérateur de décalage à droite non signé)

Exemple 1: -2 >>> 1

Code d'origine: 10000000 00000000 00000000 00000010

Code inverse: 11111111 11111111 11111111 11111101 (le bit de signe reste inchangé, les autres bits sont inversés)

Code complémentaire: 11111111 11111111 11111111 11111110 (code inverse + 1)

Décalage de 1 bit vers la droite (opérateur de bit non signé, ajoutez seulement 0 au bit le plus à gauche)

Complément: 01111111 11111111 11111111 11111111

Code inverse: 01111111 11111111 11111111 11111111 (le bit haut est 0, nombre positif)

Code d'origine: 01111111 11111111 11111111 11111111 (identique au code inverse)

Résultat: 2147483647

Exemple 2: 2 >>> 1

Code d'origine (code inverse, code complémentaire): 00000000 00000000 00000000 00000010

Déplacer un bit vers la droite (ajouter 0 au bit le plus à gauche)

Code d'origine (code inverse, code complémentaire): 00000000 00000000 00000000 00000001

Résultat: 1

7. Connaissances supplémentaires

^ =, | =, & =, << =, >> =, >>> = sont presque les mêmes que sans le signe égal, sauf que l'opération d'affectation est ajoutée. Prenez >> = comme exemple:

public class Test {
	public static void main(String[] args) {
		int num = 2;
		System.out.println(num>>=1);
        System.out.println(num);
	}
    /**result:1  1

}

Remarque: Puisqu'il y a une opération d'affectation, le côté gauche de l'opérateur ne peut pas être une constante, par exemple, 2 >> = 1 signalera une erreur.

Les données stockées dans le calcul se présentent sous forme de complément

 

références:

https://www.cnblogs.com/liaopeng/p/8436155.html

http://www.cnblogs.com/chuijingjing/p/9405598.html

https://blog.csdn.net/tianyeshiye/article/details/80261622

Je suppose que tu aimes

Origine blog.csdn.net/weixin_48968045/article/details/112298187
conseillé
Classement