#include<stdio.h>
void main()
{
unsigned x=23;
int p=2,n=2;
printf("%u\n",(x>>(p+1-n)&(0<<n));
}
为什么结果等于3 实在是看不懂 求解答一下
x>>(p+1-n)&(0<<n) 这是位运算
x>>(p+1-n): x右移1位,00010111变成00001011
(0<<n) n是有符号数,需要补1,变成0011
二者与一下 变成 0011 ,也就是3
就相当于数学运算,先算里面括号,然后再算外面口号,最后两个与,>>是右移相反<<是左移,右移一次相当于一个数除2,左移乘2,如果还不理解;
例如:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010。转换为十进制是2。
就是定义x=23,p=2=n,然后输出
一个运算