C语言经典100例问题,取一个整数a从右端开始的4~7位,求助,高分!

但是我按下面的程序得到的结果好像是错的,求助,高分。程序分析:可以这样考虑:(1)先使a右移4位。(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)(3)将... 但是我按下面的程序得到的结果好像是错的,求助,高分。
程序分析:可以这样考虑:
(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);
}
展开
 我来答
春满园中满庭芳9
推荐于2017-12-16 · 超过16用户采纳过TA的回答
知道答主
回答量:57
采纳率:100%
帮助的人:48.1万
展开全部
移位操作是按二进制算的, 右移 一下相当于除2,左移乘2,说以10进制的不能通过移位实现取位,2,8,16进制的都可以哦。
不过还是有办法,就是用16进制变量存你的10进制变量,然后按16进制移位取位,最后按16进制输出,可达到你想要的效果哦~
我要上课去了,如代码还是写不出来,追问一下,我回来帮你写个
yjh19881127
2012-04-11
知道答主
回答量:22
采纳率:0%
帮助的人:22.3万
展开全部
思路是完全正确的,但不知你的第4~7位是从0开始算还是从1开始算呢
如果最后一位算是右端第1位,那么b = a>>3.
其他都没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1fc36d4
2012-04-11 · TA获得超过3131个赞
知道大有可为答主
回答量:1497
采纳率:100%
帮助的人:1828万
展开全部
%o是八进制输入啊
你用%d 或%x试试,更明显观察测试结果。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
江伟77
2012-04-10 · TA获得超过591个赞
知道小有建树答主
回答量:230
采纳率:100%
帮助的人:209万
展开全部
一个可行的方法,仅供参考:
#include <stdio.h>
int main(void)
{
long a;
int b[10],i,j;
scanf("%ld",&a);
for(i=0;a>0;i++)
{
b[i]=a%10;
a=a/10;
}
for(j=1;j<=4;j++)
printf("%d",b[i-j-3]);
getchar();getchar();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式