2010-11-05 27 views
0

J'ai quelques questions concernant le décalage de bits VB.NET. Je comprends que les opérateurs << >> sont des opérateurs de décalage de bits dans VB.NET.Confusion de décalage de bits VB.NET

J'ai une valeur hexadécimale de deux octets, 0x3ACC, et chaque bit dans ces deux octets représente un jour, un mois ou une année. La structure de bits de cette valeur hexadécimale est yyyy yyym mmmd dddd.

Je suis confus quant à la façon dont je devrais décaler ces valeurs afin que l'année, le mois et le jour soient dans leurs propres valeurs UINT16. Quels devraient être les nombres changeants et dois-je ajouter un rembourrage au quart de travail?

Répondre

1

Vous aurez besoin d'utiliser And ainsi que les opérations de décalage de bits pour obtenir votre résultat. Vous devez déplacer vers la droite (comptez les bits "non-année" pour le montant) pour obtenir juste l'année. Pour obtenir le jour, il suffit de And avec la valeur qui a tous les bits «jour». L'extraction du mois nécessitera une combinaison des deux techniques, soit And puis >> ou >> puis And avec le masque correct.


spoilers:

  • Pour extraire l'année: 0x3ACC >> 9
  • Pour extraire le jour: 0x3ACC And 0x001F
  • Pour extraire le mois: 0x3ACC And 0x01E0 >> 5
+0

Merci qui m'a aidé tellement de! Je comprends complètement maintenant. – WizardsSleeve