在下面的代碼中,我試圖在2 char
s中存儲一個2字節的int
。然後,我嘗試在屏幕上顯示我存儲的號碼。這些部分工作得很好。爲什麼這些位反轉了?
如果我試圖看到我存儲在另一方面的數字的二進制形式,我沒有得到我所期望的。 256
給我00000000 1
而正確的是10000000 0
unsigned int num = 256;
unsigned int pos = 0;
unsigned char a[2] = {num << pos, ((num << pos) & 0xFF00) >> 8};
//we store the number in 2 bytes
cout << (((unsigned int)a[0] + ((unsigned int)a[1] << 8)) >> pos) << endl;
//we check if the number we stored is the num
for(int i = 0; i < 2; i++)//now we display the binary version of the number
{
for(int j = 0; j < 8; j++)
cout << ((a[i] >> j)&1);
cout << " ";
}
能有人請解釋什麼,我做錯了什麼?
你內在的'for'循環最不重要。 – user2357112
你在做錯誤的數學。 '256'是'0x 1 0000 0000' – qwm
@ user2357112:是否有其他錯誤? qwm:我不明白? – Luka