|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求教一个位运算问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
607
人关注过本帖
标题:
求教一个位运算问题
只看楼主
加入收藏
miracleyyf
等 级:
新手上路
帖 子:15
专家分:0
注 册:2010-2-18
结帖率:
100%
楼主
收藏
问题点数:0 回复次数:6
求教一个位运算问题
程序片段
unsigned a=16;
printf("%d,%d,%d\n",a>>2,a=a>>2,a);
运行出来结果为1,4,16
想为什么一下如何得到的结果?a>>2和a=a>>2有什么区别?
搜索更多相关主题的帖子:
运算
2010-03-24 11:22
举报帖子
使用道具
赠送鲜花
寒风中的细雨
等 级:
贵宾
威 望:
66
帖 子:1710
专家分:8645
注 册:2009-9-15
第
2
楼
收藏
得分:0
编译器是从左往右运行
printf("%d,%d,%d\n",a>>2,a=a>>2,a);
先输出a 的开始值
后a>>2将a的二进制码右移2个位 高位补零 就相当除4
再把4 赋值给 a = a>>2;
最后在a = 4
右移2个位 等价 除 4
, a 的值变成 1;
2010-03-24 12:31
举报帖子
使用道具
赠送鲜花
wangjianhui
来 自:^帅帅城^
等 级:
蝙蝠侠
威 望:
2
帖 子:353
专家分:745
注 册:2010-3-19
第
3
楼
收藏
得分:0
明白!!哈哈
加油
2010-03-24 12:33
举报帖子
使用道具
赠送鲜花
miracleyyf
等 级:
新手上路
帖 子:15
专家分:0
注 册:2010-2-18
第
4
楼
收藏
得分:0
以下是引用
寒风中的细雨
在2010-3-24 12:31:30的发言:
编译器是从左往右运行
printf("%d,%d,%d\n",a>>2,a=a>>2,a);
先输出a 的开始值
后a>>2将a的二进制码右移2个位 高位补零 就相当除4
再把4 赋值给 a = a>>2;
最后在a = 4
右移2个位 等价 除 4
, a 的值变 ...
是从右往左吧
[
本帖最后由 miracleyyf 于 2010-3-24 12:59 编辑
]
2010-03-24 12:57
举报帖子
使用道具
赠送鲜花
寒风中的细雨
等 级:
贵宾
威 望:
66
帖 子:1710
专家分:8645
注 册:2009-9-15
第
5
楼
收藏
得分:0
shi
方向
2010-03-24 13:01
举报帖子
使用道具
赠送鲜花
miracleyyf
等 级:
新手上路
帖 子:15
专家分:0
注 册:2010-2-18
第
6
楼
收藏
得分:0
老的C里面编译器是从右往左的吧
2010-03-24 13:02
举报帖子
使用道具
赠送鲜花
阿邋
等 级:
论坛游民
帖 子:84
专家分:41
注 册:2009-3-6
第
7
楼
收藏
得分:0
unsigned a=16;
printf("%d,%d,%d\n",a>>2,a=a>>2,a);
这个问题 应该是每个编译器不同而不同的。
不过算法的话,前面已经说得很清楚了。
我并不具有我想要的一切,只是我所有的都是我想要的!
2010-03-24 22:59
举报帖子
使用道具
赠送鲜花
7
1/1页
1
快速回复:
求教一个位运算问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.029837 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved