发布网友
共2个回答
热心网友
unsigned在内存中占2字节即十六位,八进制123456转换为二进制1010011100101110,b=a>>4 b=0000101001110010
c=0000000000001111 b&c即按位与,二进制对应位上全是1才为1,否则为0
d=0000000000000010
即d=2
热心网友
你的输入是什么?
八进制123456就是二进制1010 0111 0010 1110
b = a >> 4;
a右移四位之后,就成了1010 0111 0010
c = ~ ( ~ 0 << 4);
~0<<4得到的就是一个低四位是0,其余位是1的数字,对这个数字再次按位取反就得到了一个低四位是1,其余位是0的数字,并将这个数字赋值给c。
d = b & c;
这里的作用就是提取b的低四位,由于b的值是1010 0111 0010,所以低四位是0010
于是便输出0010的十进制形式2