1.先使a右移4位。
2.设置一个低4位全为1,其余全为0的数。可用(0<<4)
3.将上面二者进行&运算。

#include <stdio.h>
int main(){
    unsigned a,b,c,d;
    printf("请输入整数:\n");
    scanf("%o",&a);
    b=a>>4;
/*~按位取反, 
<<左移运算
比如0的二进制为00……0000000
那么~0就为11……1111111
而~0<<4就是将~0的二进制码向左移动4位,右边补0,
即得11……1110000
~(~0<<4)就是将上一步得到的二进制码(11……1110000)取反,
得00……0001111*/
    c=~(~0<<4);    d=b&c;    printf("%o\n%o\n",a,d);    return 0;
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注