位移问题
											题目:取一个整数a从右端开始的4~7位程序源代码:
main()
{
unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%o\n%o\n",a,d);
}
这段代码怎么理解,麻烦各位大侠了!
 程序代码:
程序代码:main()  
{  
unsigned a,b,c,d;  
scanf("%o",&a); /* 如输入:242  (这是八进字,二进字是:0000 0000 1010 0010) */ 
b=a>>4;         /* a右移4位后给b,二进字为:0000 0000 0000 1010 */ 
c=~(~0<<4);    /* ~0取反后,二进字都是1,左移4位后 1111 1111 1111 0000 , 
                   接着再取反就是:0000 0000 0000 1111   赋给c */ 
d=b&c;    /* b和c按位与给d后为:0000 0000 0000 1010 */ 
printf("%o\n%o\n",a,d);  
}  
输出为: 