| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 402 人关注过本帖
标题:问个关于位运算的问题。
只看楼主 加入收藏
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:1 
问个关于位运算的问题。
程序代码:
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);
}

上面一行简单的代码。
如果输入a=056    0101 0110右移4位应该是0000 0101啊,怎么b结果为2了?
找到原因了。^_^,八进制,只有三位,056应该表示为101110,所以结果为2

[[it] 本帖最后由 soler 于 2009-8-4 19:18 编辑 [/it]]
搜索更多相关主题的帖子: 运算 
2009-08-04 19:00
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
1位八进制等于3位二进制
输入a=056,二进制表示是:(000 101 110),即 (0 0010 1110),所以右移四位是(0000 0010),即b=2;4

[[it] 本帖最后由 CrystalFan 于 2009-8-4 19:20 编辑 [/it]]
2009-08-04 19:18
快速回复:问个关于位运算的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044605 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved