problème de structure définie
bonjours;
j'ai besoin d'un registre 48 bit, mais accessible par 6 bits, et en entier.
je l'ai défini comme suit:
Code:
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; |
puis j'utilise cela:
Code:
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";
} |
normalement je devrais avoir 1,2,3,...8
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.