取一个整数a从右端开始的4~7位。
【程序54】题目:取一个整数a从右端开始的4~7位。程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
2.程序源代码:
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);
} 看都看不懂,救命 #include <stdio.h>
int main(void)
{
unsigned a , d ;
scanf("%u" , & a) ;
d = (a / 1000) % 10000 ;
printf("%u\n" , d) ;
}
编译、运行实况:
D:\\>g++ -o x x.c
D:\\>x
123456789
3456
D:\\> jackz007 发表于 2022-5-16 23:08
编译、运行实况:
秒懂。
例题答案的的解法不行是吗? 123666666 发表于 2022-5-16 23:15
秒懂。
题目要求不严谨,上面的代码是按十进制位考虑的,如果按二进制位考虑,代码应该是下面这样:
#include <stdio.h>
int main(void)
{
unsigned a , d ;
scanf("%u" , & a);
d = (a >> 4) & 0xf ;
printf("%u\n" , d) ;
}
编译、运行实况:
D:\\>g++ -o x2 x2.c
D:\\>x2
125
7
D:\\>x2
4085
15
D:\\>
页:
[1]