Introduction à la manipulation de bits

Habituellement, un programmeur travaille sur des variables de types de données comme int, float, double, String ou des collections comme Array, List, ArrayList et ainsi de suite. Dans certains cas, les programmeurs doivent approfondir les données au niveau des octets et des bits pour extraire et manipuler les données. Des langages comme Java et C # vous permettent de manipuler des données au niveau du bit, ce qui signifie que vous avez accès à un bit spécifique dans un octet. Dans cette rubrique, nous allons découvrir la manipulation des bits en Java.

La manipulation des bits est souvent requise lorsque vous travaillez sur la compression et le chiffrement des données où le programmeur doit extraire des données au niveau des bits pour encoder, décoder ou compresser les données d'origine. Il existe de nombreuses autres applications de manipulation de bits que nous verrons plus loin dans cet article.

Java prend en charge le décalage 3 bits et 4 opérateurs au niveau du bit pour effectuer des opérations au niveau du bit. Ces opérateurs peuvent être utilisés sur des types intégraux (int, court, long et octet) pour effectuer des opérations au niveau du bit.

Opérateurs Java Bitwise et Bitshift

OpérateurLa description
&ET au niveau du bit
|OU au niveau du bit
~Complément au niveau du bit
<<Décalage à gauche
>>Décalage à droite
^XOR au niveau du bit
>>>Décalage à droite non signé

Opérateurs de manipulation de bits en Java

regardons les opérateurs plus en détail

1) OU au niveau du bit

Il s'agit d'un opérateur binaire qui prend 2 opérandes et désigné par le symbole «| ". L'opérateur au niveau du bit compare les bits correspondants des deux opérandes. Si l'un des bits d'opérande est 1, la sortie est 1 sinon, elle sera 0.

Exemple

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise OR Operation of 15 and 27
00001111
| 00011011
________
00011111 = 31 (In decimal)

Programme Java

class BitwiseOR (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 | operand2;
System.out.println(output);
)
)

Sortie: 31

2) ET au niveau du bit

Il s'agit également d'un opérateur au niveau du bit qui prend 2 opérandes et est désigné par le symbole «&». l'opérateur au niveau du bit compare les bits correspondants des deux opérandes. Si les deux bits d'opérande sont à 1, la sortie est à 1 sinon 0.

Exemple

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise AND Operation of 15 and 27
00001111
| 00011011
________
00001011 = 11 (In decimal)

Programme Java

class BitwiseAND (
public static void main(String() args) (
int operand1 = 15, operand2 = 27, output
output= operand1 & operand2;
System.out.println(output);
)
)

Sortie: 11

3) Complément au niveau du bit

Contrairement aux deux autres opérateurs dont nous avons parlé jusqu'à présent, cela ne prend qu'un seul opérande et désigné par le symbole «~». Cet opérateur inverse le bit de l'opérande. Si le bit d'opérande est 0, il le convertit en 1 et vice-versa.

Exemple

15 = 00001111 (In Binary)
Bitwise complement Operation of 15
~ 00001111
________
11110000 = 240 (In decimal)

Programme Java

class BitwiseComplement (
public static void main(String() args) (
int operand= 15, output;
output= ~operand;
System.out.println(output);
)
)

Sortie: -16

Remarque: lorsque vous exécutez le programme Java, vous obtenez -16 en sortie au lieu de 240 car le compilateur affiche le complément à 2 de ce nombre, c'est-à-dire la notion négative du nombre binaire.

Le complément à 2 de n'importe quel nombre est équivalent à - (n + 1) où n est le nombre dont le complément à 2 doit être calculé. Dans notre cas, le complément 2 de l'opérande 15 est -16 qui est également la sortie du programme.

4) XOR au niveau du bit

Bitwise XOR est un opérateur binaire qui prend 2 opérandes et désigne par un symbole «^». cet opérateur compare les bits correspondants des deux opérandes. Si les bits correspondants des deux opérandes sont différents, cela donne 1 comme sortie sinon 0.

L'opérateur XOR au niveau du bit est équivalent à (OR au niveau du bit + Complément au niveau du bit)

Exemple

15 = 00001111 (In Binary)
27 = 00011011 (In Binary)
Bitwise XOR Operation of 15 and 27
00001111
00011011
________
00010100 = 20 (In decimal)

Programme Java

class BitwiseXor (
public static void main(String() args) (
int operand1= 15, operand2 = 27, output;
output = operand1 operand2;
System.out.println(output);
)
)

Sortie: 20

5) Décalage à gauche signé

L'opérateur de décalage gauche au niveau du bit décale le motif binaire vers la gauche d'un certain nombre de fois spécifié dans l'opérande. L'opérateur de décalage gauche est désigné par le symbole «<<».

Exemple

123 (In binary: 01111011)
123 << 1 evaluates to 246 (In binary: 011110110)
123 << 2 evaluates to 492 (In binary: 0111101100)
123 << 3 evaluates to 984 (In binary:01111011000)

Programme Java

class LeftShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand << 1);
System.out.println(operand << 2);
System.out.println(operand << 3);
)
)

sortie: 246, 492, 984

6) Décalage à droite signé

L'opérateur de décalage à droite signé fonctionne exactement de la même manière que l'opérateur de décalage à gauche, juste qu'il ajoute que zéro bit est décalé vers la position d'ordre supérieur.

Exemple

123 (In binary: 01111011)
123 >> 1 evaluates to 61 (In binary: 00111101)
123 >> 2 evaluates to 30 (In binary: 00011110)
123 >> 3 evaluates to 15 (In binary:00001111)

Programme Java

class RightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >> 1);
System.out.println(operand >> 2);
System.out.println(operand >> 3);
)
)

Sortie: 61, 30, 15

7) Décalage à droite non signé

L'opérateur de décalage vers la droite décale zéro vers la position la plus à gauche du certain nombre de bits spécifié dans l'opérande.

Programme Java

class UnSignedRightShiftOperator (
public static void main(String() args) (
int operand = 123;
System.out.println(operand >>> 1);
System.out.println(operand >>> 2);
System.out.println(operand >>> 3);
)
)

Sortie : 61, 30, 15

Conclusion - Manipulation de bits en Java

Maintenant que nous avons atteint la fin de l'article, terminons en résumant le point clé que nous avons discuté dans cet article. Nous avons vu ce qu'est une petite manipulation et ses différents cas d'utilisation. Nous avons également appris les différents types d'opérateurs au niveau du bit (ET au niveau du bit, OU au niveau du bit, Complément au niveau du bit et XOR au niveau du bit) et des opérateurs de décalage de bits (opérateur de décalage à gauche signé, opérateur de décalage à droite signé et opérateurs de décalage à droite non signés) ainsi qu'un exemple et un échantillon Programme Java expliquant les opérateurs individuels.

Articles recommandés

Ceci est un guide de manipulation de bits en Java. Ici, nous discutons en détail des opérateurs Java Bitwise et Bitshift avec des exemples et des programmes Java et leur sortie. Vous pouvez également consulter l'article suivant pour en savoir plus -

  1. Qu'est-ce que l'interface Java?
  2. Outils Java
  3. Cadres Python
  4. Opérateurs booléens en Java