位域问题
- C/C++ code
#include <stdio.h>#include <string.h>typedef struct AA{ int b1:5; int b2:2;}AA;int main(void){ AA aa; char cc[100]; strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz"); memcpy(&aa, cc, sizeof(AA)); printf("%d %d\n",aa.b1, aa.b2); return 0;} 经过strcpy和memcpy后,aa的4个字节所存放的值是:
0,1,2,3的ASC码,即00110000,00110001,00110010,00110011 (这是在内存中的排序顺,地址一次增加)
所以,最后一步:显示的是这4个字节的前5位,和之后的2位
分别为:10000,和01 ,为什么前5位是10000?
[解决办法]
00110000,低5位10000,然后两位是01,有什么问题?
[解决办法]
前5位,即第一个字节的前5位。 从右往左5为,整合10000