- //题目:取一个整数a从右端开始的4~7位。
- #include <stdio.h>
- int main(int argc, const char * argv[]) {
-
- unsigned a,b,c,d;
- scanf("%o",&a); //输入八进制,如o111,则a = 73
- b=a>>4; //右移4为,73为 0b1001001,右移后为 0b00..00100
- c=~(~0<<4); //~0为 0b11...1111 ,左移4位为 0b11..1110000 ,再取反得 0b00..001111
- d=b&c; //0b00..00100 & 0b00..001111 = 0b00..000100
- printf("%o\n%o\n",a,d);
-
- return 0;
- }
复制代码 |
|