bonjours;
j'ai besoin d'un registre 48 bit, mais accessible par 6 bits, et en entier.
je l'ai défini comme suit:
puis j'utilise cela:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 typedef struct reg48 { unsigned int b7:6 ,b6:6 ,b5:6 ,b4:6, b3:6, b2:6, b1:6, b0:6; } reg48; typedef union reg48_6 { unsigned __int64 reg;// pour un accés à toute la valeurs reg48 b; //pour traiter chaque 6 bits à part }reg48_6;
normalement je devrais avoir 1,2,3,...8
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 reg48_6 s; int i; s.reg=0; s.b.b0=1; s.b.b1=2; s.b.b2=3; s.b.b3=4; s.b.b4=5; s.b.b5=6; s.b.b6=7; s.b.b7=8; for(i=0;i<8;i++) { cout<<hex<<s.b.b0<<"\n"; s.reg=s.reg<<6; cout<<"\n"; }
MAIS il m'affiche: 1,2,3,1,1,11,21,32............je ne comprend pas pourquoi.?
merci de me dire comment je fais pour retrouver les s.b.bi dans le s.b.b0 quand je fais des decalage.
Partager