结构体位域的有关问题!

结构体位域的问题!!
typedef   struct  
{
int   a   :   1;
int   b   :   1;
int   c   :   1;
}   test;

void   main()
{
test   k;
k.a   =   1;
k.b   =   0;
k.c   =   0;

printf( "%d,   %d,   %d\n ",   k.a,   k.b,   k.c);
}

问题1:   为什么在test   k;后,我断点去看了,初始值为   a   =0,   b=0,c=-1,对于c=-1不理解??
问题2:这样输入为什么k.a会是-1呀?想也不想不通....

------解决方案--------------------
因为只有一位,当它设为1以后,等于符号位设为1,符号为1的就是负数啊?所有位为1的都是负数,这是基本规则 啊?