Bonjour à tous et bonne année avec VB4A
Ma question du jour,
J'ai commencé à décodé le mode d'emploi bit à bit, j'en suis justement au mot clé bit.UnsignedShiftRight(x,y)
Je ne comprend pas son fonctionnement
Pouvez vous m'expliquer avec des exemples simples ?
Dim N_int As Int, shift_int As Int
N_int=-1000
shift_int=2
flags=Bit.UnsignedShiftRight(N_int,shift_int)
edittext1.text= flags
'me donne 1073741574 ? je n’arrive pas à expliquer
Merci
JP
prenons un autre exemple que le tien:
le nomber entier 1000
sa représentation binaire est :
1111101000
Bit.UnsignedShiftRight(1000, 2) décale le nombre binaire de deux rangs vers la droite et ajoute des 0 à gauche (nombre binaire sans signe), donc
0011111010 ou
11111010
Le résultat en nombre entier est 250 ce qui correspont a notre attente.
Un décalage de 2 vers la droite correspond à une division par 4.
Dans ton exemple avec le nombre -1000
sa représentation binaire est :
11111111111111111111110000011000
décalage de vers la droite:
00111111111111111111111100000110
ce qui donne en nombre entier
1073741574
Si tu espérais un résultat de -250 il faut utiliser Bit.ShiftRight.
Bit.ShiftRight traite des nombres binaires avec le signe.
Dans ce cas le bit tout à gauche indique le signe
et Bit.ShiftRight ajoute à gauche soit des 0 ou des 1 selon le signe.
Bien compris,
je prépare un mode d'emploi de B4A avec des exemples, pas une simple traduction, aussi j'ai besoin de tout comprendre. (et à mon âge...!)
C'est ce que j'avais fait quand j'ai écrit le mode d'emploi du Basic Bascom pour micro-contrôleur AVR qui date un peu maintenant.
Cordialement
JP