#include <iostream>
using namespace std;
#include <vector>
typedef struct AA
{
int b1:5;
int b2:2;
}AA;AA aa;int main()
{
char cc[100];
strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz");
memcpy(&aa,cc,sizeof(AA));
cout << aa.b1 <<endl;
cout << aa.b2 <<endl;
printf("d=%d\n",sizeof(AA));
return 0;
}
我知道b1是10000,但我就是不明白为什么是-16,求高手帮忙
using namespace std;
#include <vector>
typedef struct AA
{
int b1:5;
int b2:2;
}AA;AA aa;int main()
{
char cc[100];
strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz");
memcpy(&aa,cc,sizeof(AA));
cout << aa.b1 <<endl;
cout << aa.b2 <<endl;
printf("d=%d\n",sizeof(AA));
return 0;
}
我知道b1是10000,但我就是不明白为什么是-16,求高手帮忙
7 signed , 1000000b 是 -64 , 0111111 是 63 范围是 -64 ~ +63
6 -32 ~ +31
5 -16 ~ +15
...
...
...
2 10b -2 -2 ~ 1
1 位的 signed , 1b 是 -1 , 0 是 0 -1 ~ 0
如果一个5位的有域号数,10000不是-16,而是32,那反而当了他是unsigned的了.