struct A //位段类型
{
int a : 10;//最高位为512;
int b : 5;//最高位为32;
};
int main()
{
struct A s;
s = { 0 };
s.a = 513;//0010 0000 0001
s.b = 38;//10 0110
printf("%d\n",s.a);
printf("%d\n", s.b);
}
为什么 s.a
和 s.b
同样最高位都是 1
,但 s.a
为取其补码,变成负数,但 s.b
却是正数 6
?
a: 10 这个能表示的最大值是 1023(无符号)
b: 5 这个能表示的最大值是 37(无符号)
都按位运算了,就没有符号位的概念了,你给个 513 和 38 想表达什么?