关于移位的问题,请看看问题出在哪里
我要做的事情是对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