首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于移位的有关问题,请看看有关问题出在哪里

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

关于移位的问题,请看看问题出在哪里
我要做的事情是对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不是很熟,突然要弄这些,很头疼啊~~~~~ 恳请帮忙

热点排行