Objectif : On souhaite écrire une application de manipulation interne des bits d'une variable entière non signée sur 8 bits. L'application contiendra 9 méthodes :
Spécifications des méthodes :
1. Une méthode BitSET permettant de mettre à 1 un bit de rang fixé.
2. Une méthode BitCLR permettant de mettre à 0 un bit de rang fixé.
3. Une méthode BitCHG permettant de remplacer un bit de rang fixé par son complément.
4. Une méthode SetValBit permettant de modifier un bit de rang fixé.
5. Une méthode DecalageD permettant de décaler les bits d'un entier, sur la droite de n positions (introduction de n zéros à gauche).
6. Une méthode DecalageG permettant de décaler les bits d'un entier, sur la gauche de n positions (introduction de n zéros à droite).
7. Une méthode BitRang renvoyant le bit de rang fixé d'une entier.
8. Une méthode ROL permettant de décaler avec rotation, les bits d'un entier, sur la droite de n positions (réintroduction à gauche).
9. Une méthode ROR permettant de décaler avec rotation, les bits d'un entier, sur la gauche de n positions (réintroduction à droite).
Exemples de résultats attendus :
Prenons une variable X entier (par exemple sur 8 bits) X = 11100010
1. BitSET (X,3) => X = 11101010
2. BitCLR (X,6) => X = 10100010
3. BitCHG (X,3) => X = 11101010
4. SetValBit(X,3,1) => X = 11101010
5. DecalageD (X,3) => X = 00011100
6. DecalageG (X,3) => X = 00010000
7. BitRang (X,3) = 0 ; BitRang (X,6) = 1 ...
8. ROL (X,3) => X = 00010111
9. ROR (X,3) => X = 01011100
Implantation en Java
Lors des jeux de tests, bien se rappeler que le type primaire int est un type entier signé sur 32 bits (représentation en complément à deux)
Proposition de squelette de classe Java à implanter :
class Application8Bits {
static void main(String [ ] args){
…….. }
static int BitSET (int nbr, int num) { …….. }
static int BitCLR (int nbr, int num) { …….. }
static int BitCHG (int nbr, int num) { …….. }
static int SetValBit (int nbr, int rang, int val) { …….. }
static int DecalageD (int nbr, int n) { …….. }
static int DecalageG (int nbr, int n) { …….. }
static int BitRang (int nbr, int rang) { …….. }
static int ROL (int nbr, int n) { …….. }
static int ROR (int nbr, int n) { …….. }
}