| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 682 人关注过本帖
标题:这一句代码我理解不了。。就一句~
只看楼主 加入收藏
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
收藏
已结贴  问题点数:20 回复次数:6 
这一句代码我理解不了。。就一句~

first、mid和last都是int型,且first < last。有这样一行代码。

我理解不了啊。。
mid = (first & last) + ((first ^ last) >> 1);


我不是不懂语法,而是不懂其中的思路!


2011-11-30 17:52
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
没有人理我~

o(∩∩)Linux & Python 群:187367181
2011-11-30 18:09
小鱼儿c
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:852
专家分:1317
注 册:2011-4-1
收藏
得分:7 
我老是忘记 那些为运算
我说一下思路。
嘿嘿
mid = (first & last) + ((first ^ last) >> 1);
first&last 相与还是什么的 忘了 后面的也是一样
这些正数化成二进制 然后进行计算法。    >>向移动1位
主要是化成二进制
百度百科里面有。。
有什么二进制进行运算而已。。。
自己写一些就知道了。。
我吃饭出了,本想给你写例子的  看来没有时间了。。。

用心做一件事情就这么简单
2011-11-30 18:15
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
回复 3楼 小鱼儿c
谢谢啊。。
不过语法方面的我还是看得懂的。我只是求思路而已。



o(∩∩)Linux & Python 群:187367181
2011-11-30 18:39
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
收藏
得分:7 
。。。。  看不懂
2011-11-30 18:42
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:7 
其实就是 mid = (first + last) / 2;
位的异或运算的很多性质与算数加法运算很相似,只是没有了进位而已。0+0=0 0+1=1 1+0=0 1+1=0(进1) 0^0=0 0^1=1 1^0=0 1^1=0(无进位)
前面的与运算正是在完成进位计算。first与last异或后再向右移1位,既做了除2运算,同时也完成了与进位位对齐的工作。
就是这样。

重剑无锋,大巧不工
2011-11-30 18:57
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
收藏
得分:0 
回复 6楼 beyondyf
赞一个。。谢啦~

o(∩∩)Linux & Python 群:187367181
2011-11-30 21:24
快速回复:这一句代码我理解不了。。就一句~
数据加载中...
 
   



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

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