Booleen - Les manipulation de bits( Temps de lecture estimé à 1 min 45 sec )
La manipulation de bits sous gambas est une chose aisée car il existe beaucoup de fonctions dont voici la liste :
BClr Efface un bit dans un nombre entier.
BSet Positionne un bit dans un nombre entier.
BTst Teste un bit dans un nombre entier.
BChg Inverse un bit dans un nombre entier.
Lsl Décale un nombre entier vers la gauche.
Lsr Décale un nombre entier vers la droite.
Shl / Asl Décale un nombre entier vers la gauche et conserve son signe.
Shr / Asr Décale un nombre entier vers la gauche et conserve son signe.
Rol Rotation d’un entier vers la gauche.
Ror Rotation d’un entier vers la droite.
Par l'intermédiaire de ce petit exemple, vous pourrez suivre l'evolution de votre nombre binaire.
Voici le code sourcec de cet exemple :
' Gambas class file PUBLIC SUB Form_Open() ME.Center END PUBLIC SUB Button2_Click() ME.Close END PUBLIC SUB Button1_Click() TextArea1.Clear TextArea1.Insert("conversion en binaire de votre nombre : " & Bin$(ValueBox1.Value) & Chr$(10)) TextArea1.Insert("Effacement du bit 2 avec Bclr : " & Bin$(BClr(ValueBox1.Value, 1)) & Chr$(10)) TextArea1.Insert("Positionne le bit grace à Bset : " & Bin$(BSet(ValueBox1.Value, 1)) & Chr$(10)) TextArea1.Insert("Test du bit 2 avec Btst : " & Bin$(BTst(ValueBox1.Value, 2)) & Chr$(10)) TextArea1.Insert("Change le bit 2 avec BChg : " & Bin$(BChg(ValueBox1.Value, 2)) & Chr$(10)) TextArea1.Insert("Decale le nombre entier vers la gauche avec Lsl : " & Bin$(Lsl(ValueBox1.Value, 1)) & Chr$(10)) TextArea1.Insert("Decale le nombre entier vers la droite avec Lsr : " & Bin$(Lsr(ValueBox1.Value, 1)) & Chr$(10)) TextArea1.Insert("Décale un nombre entier vers la gauche et conserve son signe avec Asl : " & Bin$(Asl(ValueBox1.Value, 1)) & Chr$(10)) TextArea1.Insert("Décale un nombre entier vers la gauche et conserve son signe avec Asr : " & Bin$(Asr(ValueBox1.Value, 1)) & Chr$(10)) TextArea1.Insert("Rotation d’un entier vers la gauche avec Rol : " & Bin$(Rol(ValueBox1.Value, 1)) & Chr$(10)) TextArea1.Insert("Rotation d’un entier vers la droite avec Ror : " & Bin$(Ror(ValueBox1.Value, 1)) & Chr$(10)) END