Bit2Bit overflow

cs_ALCHAN Messages postés 4 Date d'inscription samedi 31 mai 2003 Statut Membre Dernière intervention 14 décembre 2004 - 8 mai 2004 à 21:15
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 - 28 juil. 2004 à 21:50
Bonjour,
en 32 bit avec Borland C++ 5.02
1) comment travailler en overflow : (Prev = Prev*2^9)
2) comment extraite les 15 bits à partir du 5ème et avoir en décimale la valeur
pour un générateur de nombres aléatoires
Merci

1 réponse

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
28 juil. 2004 à 21:50
extraire les bits, utilise les decalage de bits, les operateurs sur les bits, et des masques. je comprend pas exactement ce que tu veux donc je vais te donner un exemple: tu veux isoler le 2eme octet (donc les puissance de 2 les plus grandes) d'un entier x (codé sur 4 octets, donc 32 bits):

int x = valeur;
int masque = 0x00 ff 00 00;

int resultat = x & masque;
//tu effectue un et bit a bit entre ton nombre et ton masque tu recupere donc les valeurs de tes 8 bits dont la valeur a été mise a 1 ds ton masque, et les autres bits sont a 0 pour le reste

resultat = resultat >> 16;
//tu affecte a résultat lui meme dont tous ses bits sont décalés a droite de 16 bits.

//remarque : les bits sortis sont perdus (ici ils etaient tous a zero dc cest pas un drame), donc tu aurais tt aussi bien pu faire :

int x = valeur;
int masque = 0x 00 00 00 ff

int resultat = resultat >> 16;
resultat = x & masque.

les fonctions sur les bits sont :
<< decalage a gauche
>> a droite
| ou logique bit a bit
& et logique
~ le not

jen ai peut-etre oublié, mais ca devrait deja te servir
0
Rejoignez-nous