[leetcode]371. Sum of Two Integers

Description:
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -.
Example:
Given a = 1 and b = 2, return 3.
感觉自己智商不够用了
一开始觉得应该是用加法器的原理来实现,然而自己写的那个写了40行然后还错误一堆,人家写的就两行
int getSum(int a, int b) {
if(!a)
return b;
else
return getSum((a&b)< <1,a^b); }

就这样
就是要考虑两个部分
1.进位
0+0→不进位
0+1→不进位
1+0→不进位
1+1→进位,即相当于是10,将10加到不考虑进位的计算结果上,即可得到整个的计算结果,而可以用位运算的与操作和向左的移位操作即可模拟上述的是否进位:
0&0=0 (0&0)< <1=0 0&1=0 (0&1)<<1=0 1&0=0 (1&0)<<1=0 1&1=1 (1&1)<<1=10 2.不考虑进位的计算结果。 以一位二进制数来表示: 1^1=0 1^0=1 0^1=1 0^0=0 就是a^b 一共计算两次,第一次是两个数相加产生进位, 产生新的原来的位置的数据,然后将这两个产生的数据再相加。 参考了http://zhidao.baidu.com/question/404020081.html (头一次在百度知道看到这么高质量的回答) Continue reading "[leetcode]371. Sum of Two Integers"

[zt]踏歌行

作者: 王大锤
发表于 2011-8-3 16:13
标题: 踏歌行
高中语文老师在课堂上讲到,庄子老婆死了,他击盆而歌,同学们在下面一阵哗然。把台上老师的得意淹没了。
我最近一直在找一本看得进去的书。找到了帕乌斯托夫斯基的《烟雨霏霏的黎明》,第一篇是这样开篇的:
“小男孩正在用彩色铅笔画画,他全神贯注,而且在认真思考什么,后来,他抬起头看了我一眼,眼眶里突然涌出了泪水……爸,他小声问,人为什么不发明出一种长生不老的药呢?”
随着这个问题,帕乌斯托夫斯基讲述一个故事。
早上在公交车上,我只看了故事的开头,大段的对于俄国辽阔而层次丰富的自然界的描写。我尝试认真看下去——以往的阅读经验,只要有这种描写,我都是匆匆带过,全然不顾作家的心血,我只想看到小说的情节,而其中蕴含的诗意,对人类生存环境所下的笔墨,成了浮光掠影。
然而现在我尝试感受作者的用心。当你有过越来越多的游历,关于山和海,你会了解人和自然不仅仅是“和谐共处”这种字面上的说法那么简单。他们会拓宽你的理解范围,让你知道时间是什么。让你知道远方是什么。
读万卷书,行万里路,古人说话言简意赅,他们不跟你分享经验。不告诉你为什么会这样。这很讨厌,我觉得古人没有现代人勇敢,他们把感情藏得很深,显出一副饱学或者经验丰富的样子。而实际上,你想明白这句话,你在理解的过程中,就成为了自己。
萧红在文章里说,“是山么,是山你就高高的。是河么,是河你就长长的。”我想这不仅仅是比喻,作家确定地把灵魂和山河放在了一起。
虽然我是佛教徒,但对于灵魂还有一个私心,就是人死了,真的什么都没有了,你不需要努力,便可寂灭,所有的苦难,都烟消云散。
可是大海还在那里。海里的鱼不会再爬上岸。世界也会厌倦,经历过一次,就够了。
[ 本帖最后由 王大锤 于 2011-8-3 16:26 编辑 ]