Opérateurs Orientés Bits en Java
Exercice 1 : Inversion des bits
Écris un programme Java qui utilise l'opérateur de complément à 1 (~) pour inverser les bits d'un nombre donné par l'utilisateur.
- Initialiser un entier nb a 32.
- Inverse les bits de cet entier en utilisant l'opérateur a proprié.
- Affiche le résultat avant et après l'inversion.
Questions :
- Pourquoi le résultat est-il un nombre négatif lorsque l'on inverse les bits d'un nombre positif ?
Exercice 2 : ET logique bit à bit (&)
Écris un programme qui utilise l'opérateur ET bit à bit (&) pour extraire les bits communs entre deux nombres donnés par l'utilisateur.
- Initialiser un entier nb1 = 10 et nb2 = 7.
- Effectue l'opération et logique entre les deux nombres.
- Affiche la représentation binaire des deux nombres ainsi que le résultat.
Questions :
- Quels sont les bits communs entre les deux nombres dans cet exemple ?
- Comment fonctionne l'opérateur et logique au niveau des bits ?
Exercice 3 : OU logique bit à bit (|)
Écris un programme qui utilise l'opérateur OU bit à bit (|) pour combiner les bits de deux nombres entiers donnés par l'utilisateur.
- Initialiser un entier nb1 = 10 et nb2 = 7.
- Utilise cet opérateur pour effectuer l'opération bit à bit.
- Affiche les résultats en binaire et en décimal.
Exercice 4 : OU exclusif (XOR) bit à bit (^)
Écris un programme qui utilise l'opérateur XOR bit à bit (^) pour déterminer les bits qui diffèrent entre deux nombres.
- Initialiser un entier nb1 = 10 et nb2 = 7.
- Utilise cet opérateur pour comparer les deux nombres bit à bit.
- Affiche le résultat.
- Pourquoi le résultat de l'opération
^
ne contient des 1 que là où les bits des deux nombres diffèrent ?
Exercice 5 : Décalage à gauche (<<)
Écris un programme qui utilise l'opérateur de décalage à gauche (<<) pour multiplier un nombre par une puissance de 2.
- Demande à l'utilisateur d'entrer un nombre entier = 10 et un nombre de décalages = 2.
- Utilise l'opérateur
<<
pour décaler les bits du nombre.
- Affiche le résultat en binaire et en décimal.
Questions :
- Pourquoi le résultat est-il équivalent à multiplier le nombre par 4 dans cet exemple ?
Exercice 6 : Décalage à droite signé (>>)
Écris un programme qui utilise l'opérateur >> pour diviser un nombre entier par une puissance de 2 tout en conservant le signe.
- Demande à l'utilisateur d'entrer un nombre = -10 entier et un nombre de décalages = 2.
- Utilise l'opérateur
>>
pour décaler les bits du nombre vers la droite.
- Affiche le résultat.
Questions :
- Que se passe-t-il lorsque le nombre est positif ?
Exercice 7 : Décalage à droite non-signé (>>>)
Écris un programme qui utilise l'opérateur >>> pour décaler les bits d'un nombre vers la droite sans tenir compte du signe.
- Demande à l'utilisateur d'entrer un nombre entier = -10 et un nombre de décalages = 5 .
- Utilise l'opérateur
>>>
pour effectuer le décalage.
- Affiche le résultat en binaire et en décimal.
Questions :
- Pourquoi le résultat est-il positif même si le nombre initial est négatif ?
Exercice 8 : Utilisation des opérateurs de bits pour tester des conditions
Écris un programme qui utilise des opérateurs orientés bits pour effectuer les tâches suivantes :
- Vérifie si un nombre donné par l'utilisateur est pair ou impair en utilisant l'opérateur
&
.
- Vérifie si un bit spécifique (fourni par l'utilisateur) est activé dans un entier.
Exercice 9 : Affectation combinée avec des opérateurs orientés bits
Écris un programme qui utilise les opérateurs d'affectation combinée avec des opérateurs orientés bits pour modifier un entier.
- Utilise les opérateurs combinés
|=
, &=
, ^=
, <<=
, >>=
et >>>=
pour ajuster les bits d'un nombre = 12.
- complete le code suivant : .
Exemple :
int nombre = 12; // _____________ en binaire
// Utilise |= pour activer certains bits
___________ // Active le bit 1
System.out.println("Après |= 2 : " + ____________.toBinaryString(nombre));
// Utilise &= pour masquer certains bits
__________________; // Garde les 4 premiers bits
System.out.println("Après &= 15 : " + ______.toBinaryString(nombre));
// Utilise ^= pour inverser des bits
___________; // Inverse le bit 0
System.out.println("Après ^= 1 : " +_______.toBinaryString(nombre));
// Décalages avec <<= et >>=
_________;
System.out.println("Après <<= 2 : " + _______.toBinaryString(nombre));
___________;
System.out.println("Après >>= 1 : " + __________.toBinaryString(nombre));
Ces exercices du site pandacodeur.com couvrent différents aspects des opérateurs orientés bits en Java.