Opérations de masque de bits en Java

Zeeshan Afridi 12 octobre 2023
  1. Opérations de masque de bits en Java
  2. Opérateurs au niveau du bit en Java
Opérations de masque de bits en Java

Le masque de bits est la représentation binaire de certaines données. Dans le masquage de bits, nous considérons toutes les données comme des chiffres binaires comme des 0 et des 1.

On peut aussi utiliser ces chiffres binaires comme booléens puisque 1 représente true et 0 représente false.

Opérations de masque de bits en Java

Une autre définition du masquage de bits est la visualisation d’un nombre ou d’autres données en représentation binaire. Certains bits sont mis et d’autres sont non mis, où mis signifie true ou 1 et non mis signifie false ou 0.

Disons que nous avons une valeur binaire 10011. Ici, les 1er, 4ème et 5ème bits sont des sets tandis que les 2e et 3e sont des unsets.

Comprenons le masque de bits à travers un exemple. Supposons que nous ayons un ensemble de quatre caractères {w,x,y,z}, et que nous souhaitions une représentation différente de la chaîne de caractères.

Pour créer un masque de 4 bits {_ _ _ _}, chaque bit nous donne l’information si nous nous référons à ce caractère ou non. Pour simplifier, la combinaison binaire 1001 signifie w,z, 0000 signifie une chaîne vide et 1111 signifie w, x, y, z.

Maintenant que nous avons compris les bits et le masquage de bits, il est temps d’en savoir plus sur les opérateurs de bits utilisés pour manipuler les bits.

Opérateurs au niveau du bit en Java

Les opérateurs bit à bit Java sont utilisés pour effectuer la manipulation des bits. Ces opérateurs peuvent être utilisés dans n’importe quel type intégral comme short, byte, long, char, int, etc.

Nous avons différents opérateurs bit à bit. Chacun d’eux est utilisé dans un but différent.

Ce sont les suivants :

  1. ET par bit (&)
  2. OU par bit (|)
  3. Complément par bit (~)
  4. XOR par bit (^)

Opérateur ET (&) au niveau du bit en Java

L’opérateur AND est un opérateur au niveau du bit noté &. Il effectue un calcul petit à petit de deux valeurs ou plus et renvoie true si les deux valeurs sont true ; sinon, false.

 1(True) & 1(True)  = 1(True)
0(False) & 0(False) = 0(False)
 1(True) & 0(False) = 0(False)
0(False) & 1(True)  = 0(False)

Exemple de code :

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    int a = 3;
    int b = 4;

    // bitwise AND
    // 0011 & 0100=0000 = 0
    System.out.println("a & b = " + (a & b));
  }
}

Production:

a & b = 0

Opérateur OR (|) au niveau du bit en Java

L’opérateur OU est également un opérateur au niveau du bit noté |, mais il est différent de l’opérateur ET (&). Elle renvoie true si et seulement si une seule valeur est true ; sinon, false.

 1(True) | 1(True)  = 1(True)
0(False) | 0(False) = 0(False)
 1(True) | 0(False) = 1(True)
0(False) | 1(True)  = 1(True)

Exemple de code :

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    int a = 3;
    int b = 4;

    // bitwise OR
    // 0011 & 0100=0000 = 7
    System.out.println("a | b = " + (a | b));
  }
}

Production:

a & b = 7

Opérateur de complément binaire (~) en Java

L’opérateur de complément binaire (~), également connu sous le nom d’opérateur NOT, peut inverser un motif binaire. C’est un opérateur unaire car il est utilisé avec une seule valeur.

Supposons que nous ayons un nombre binaire, 10110, et que nous voulions l’annuler avec l’opérateur de complément binaire (~). Il devient 01001.

Il a inversé les 0 en 1 et les 1 en 0.

 ~ 1(True) = 0(False)
~ 0(False) = 1(True)

Exemple de code :

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    // Initial values
    int a = 3, b;

    // bitwise complement of a
    // a = 011 where b = ~a, b =100
    b = ~a;
    System.out.println("~a = " + b);
  }
}

Production:

~a = -4

Opérateur Bitwise XOR (^) en Java

L’opérateur Java bitwise XOR est un opérateur binaire noté ^.

Elle renvoie true si les valeurs binaires d’entrée sont toutes les deux différentes. Cependant, si les valeurs d’entrée sont les mêmes, soit 0 ou 1, le résultat est false.

 1(True) ^ 1(True)  = 0(False)
0(False) ^ 0(False) = 0(False)
 1(True) ^ 0(False) = 1(True)
0(False) ^ 1(True)  = 1(True)

Exemple de code :

package articlecodesinjava;
public class ArticleCodesInJava {
  public static void main(String[] args) {
    // Initial values
    int a = 3;
    int b = 4;

    // bitwise xor
    // 0011 ^ 0100 = 0111 = 7
    System.out.println("a ^ b = " + (a ^ b));
  }
}

Production:

a ^ b = 7
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn