[VB.Net] Manipulation de bits sur Int32

Manipulation de bits sur Int32 [VB.Net] - C#/.NET managed - Programmation

Marsh Posté le 07-04-2003 à 16:32:30    

Voila j'ai un entier de 32 bits (Int32) et je voudrais faire quelques manipulation sur les bits.
 
J'ai vu les opérateurs And, Not, Or, Xor fonctionnaient sur un entier, ce qui me sera bien pratique.
 
Ce que je n'ai pas trouvé c'est si il existe des "shifts left" (<< ), "shift right" (>> ) ou des fonctions similaires sur Int32 en Vb.Net (c'est surtout pour éviter de diviser / multiplier par 2 de manière répétée pour déplacer mes bits à droite ou à gauche).
 
Par ailleurs j'ai une question subsidiaire, quel est déjà le préfixe pour définir une valeur en binaire ? Genre pouvoir assigner un entier 32 bits de cette manière :

Code :
  1. iVal = [sûrement qqch a mettre]00001101001011010000110101111101

Reply

Marsh Posté le 07-04-2003 à 16:32:30   

Reply

Marsh Posté le 07-04-2003 à 17:04:22    

VB .NET ne dispose pas d'opérateur de bitshifting. Mais tu peux contourner ceci :
 
- Si tu veux décaler d'un bit vers la gauche, tu multiplies par 2
- 2 bits vers la gauche => x4
- 3 bits vers la gauxhe => x8
 
etc...
 
Et pour décaler vers la droite, même topo, sauf que tu divises au lieu de multiplier


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 07-04-2003 à 17:16:25    

OK tu confirme mes craintes ;)
 
Pour l'astuce je connaissais, repris de mon précédent message :
c'est surtout pour éviter de diviser / multiplier par 2 de manière répétée pour déplacer mes bits à droite ou à gauche
 
Seul truc il faudra que je fasse gaffe aux overflows...

Reply

Marsh Posté le 07-04-2003 à 17:17:51    

Requin a écrit :

Pour l'astuce je connaissais, repris de mon précédent message :
c'est surtout pour éviter de diviser / multiplier par 2 de manière répétée pour déplacer mes bits à droite ou à gauche


ça m'apprendra à lire les posts en entier [:wolfman]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed