读书人

关于移位的有关问题请看看有关问题出

发布时间: 2012-04-18 15:01:59 作者: rapoo

关于移位的问题,请看看问题出在哪里
我要做的事情是对32bit的数字取前六位,我想通过右移26位实现。

printf("%x\n", 0x1d000006 >> 26);
输出结果为7,是我想要的结果

int num = 0x1d000006;
printf("%x\n", num >> 26);
输出结果为0。

实际上我注意到,16bit的数字赋值给变量以后,再读出来就已经不对了:
int num = 0x1d000006;
printf("%x\n",num);
输出结果为6。前面的位数都没有了。

为什么??怎么改?
谢谢!

[解决办法]
你是什么编译器?我这没问题呀。你的int是16bit的吧?
[解决办法]
为什么我输出7没问题?
gcc编译的。
[解决办法]
很简单 你的编译器默认int为16位
[解决办法]
用其它的编译器啊
VC, codeblocks

探讨
多谢回复!

我是在win xp上的TC 2.0 上编译运行的。变量声明成long也不行。好像只认16bit,再长就不行了。你们觉得是什么问题?

我对C不是很熟,突然要弄这些,很头疼啊~~~~~ 恳请帮忙

读书人网 >C语言

热点推荐