位运算取位问题
由于是wap发贴,无法分行,挤在一起看起来比较累,请见谅。 由于老谭的习题上机与指导错误实在太多了,所以对此题的题解正确表示怀疑。以下是他写的取位函数:unsigned short int getbits(unsigned short value,int n1,int n2)/*分行*/ {unsigned short int z; /*分行*/ z=~0; /*分行*/ z=(z>>n1) & (z<<(16-n2)); /*分行*/ z=value & z; /*分行*/ z=z>>(16-n2); /*分行*/ return (z);} printf("%d\n",getbits(100,1,5 )); 结果为0。可能吗?100的二进制为:1100100取1至5位结果应该是4才对啊。看他的解题思路实在不解,又看他下面特意写了一百多字解释说他这个函数怎么适用的……晕乎中,应该和编译器没关系吧?我用DEV的,谁有空用TC帮我编译下看看正确答案啊!