c语言问题,不理解,求高手指点:

#include<stdio.h>main(){unsigneda,b,c,d;scanf("%o",&a);b=a>>4;c=~(~0<<4);d=b&4;printf... #include<stdio.h>
main()
{
unsigned a,b,c,d;
scanf("%o",&a);
b=a>>4;
c=~(~0<<4);
d=b&4;
printf("%o\n%o\n",a,d);
}
输出结果为31463146314和·4不知道为什么!!c=~(~0<<4);这条语句不理解
展开
 我来答
小白范
2014-01-07 · TA获得超过357个赞
知道小有建树答主
回答量:309
采纳率:50%
帮助的人:280万
展开全部
~操作符的含义是:按位取反。
~的优先级比<<高,所以先计算~0
~0 = 11111111...1111
~0<<4 = 1111...11110000
~(~0<<4) = 0000....00001111

中间省略的位数取决于你的CPU的字长。
绝尘1907187995
2019-11-29
知道答主
回答量:20
采纳率:0%
帮助的人:1万
展开全部
程序分析:可以这样考虑:
(1)先使a右移4位。
(2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)
(3)将上面二者进行&运算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式