On vous donne l'interface Byte suivante :
public interface Byte {
/*
* @pre i est un entier positif et 0<=i<=7
* @post On retourne la valeur du bit à la position i
*/
public int getBit(int i);
/*
* @pre i est un entier positif et 0<=i<=7
* @post le bit à la position i est mis à 1
*/
public void setBit(int i);
/*
* @pre i est un entier positif et 0<=i<=7
* @post le bit à la position i est remis à 0
*/
public void resetBit(int i);
/*
* @pre -
* @post Le tableau est décallée d'un bit vers la droite
* (attention à la structure interne)
* Le bit de poids faible est mis à 0.
*/
public void shiftLeft();
/*
* @pre -
* @post Le tableau est décallée d'un bit vers la gauche
* (attention à la structure interne)
* Le bit de poids fort prend la valeur du bit de poids faible avant rotation
*/
public void rotateRight();
/*
* @pre -
* @post On effectue un ET logique entre chaque bit de b et b1
*/
public Byte and(Byte b1);
}
Ainsi que la classe (à compléter) ByteTab suivante :
public class ByteTab implements Byte {
private boolean b[];
// true signifie 1
// false signifie 0
/*
* @pre -
* @post a construit un Byte dont tous les bits sont mis à 0
*/
public ByteTab() {
b=new boolean[8];
for(int i=0;i<b.length;i++) {
b[i]=false;
}
}
/*
* @pre s.length==8, s ne contient que des caractères 0 et 1
* @post a construit un byte dont la représentation naturelle en String est s
* La représentation naturelle d'un byte sous la forme d'un String est
* le bit de poids fort à gauche. Dans le tableau de char, on stocke
* le byte de façon à avoir le bit de poids faible (resp. fort)
* en position 0 (resp. 7).
*
* Exemple
*
* 5 en décimal correspond à 00000101 en binaire et
* sera stocké dans le tableau 10100000
*/
public ByteTab(String s) {
b=new boolean[8];
for(int i=0;i<s.length();i++) {
if(s.charAt(i)=='0')
b[7-i]=false;
else
b[7-i]=true;
}
}
/*
* @pre -
* @post retourne la représentation naturelle du nombre binaire
* c'est-à-dire celle où le bit de poids fort est à gauche
*/
public String toString() {
String r="";
for(int i=b.length-1;i>=0;i--) {
if(b[i])
r+='1';
else
r+='0';
}
return r;
}
//A compléter
}
INGInious