读书人

位段有关问题-什么时候取补码

发布时间: 2012-02-10 21:27:42 作者: rapoo

位段问题-什么时候取补码?
struct bs
{
unsigned a:3;
int b:3;
unsigned c:7;
} bit,*pbit;


bit.a=3;
//bit.b=0x17;
bit.b=3;
bit.c=12;


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


struct tmdf
{
int a:1;
int b:3;
int c:4;
}ff ;

ff.a=1;
ff.b=3;
ff.c=12;

cout < < "ff.a: " < <ff.a < < " " < <ff.b < < " " < <ff.c < <endl;


为什么bit.b=3而ff.b=-1
不是说取补码吗怎么bit.b不是,而ff.b是取补码

[解决办法]
3,3,12
-1,3,-4
请按任意键继续. . .

[解决办法]
不会的应该是一样的 有3个位能就算一个符号剩下2位也能表示3以内的数据
[解决办法]
我测试的是3,没错.我用的是gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)
你用的什么编译器?是不是它的问题

读书人网 >C语言

热点推荐