黑马程序员技术交流社区

标题: 位运算实现变量自增加1 [打印本页]

作者: 王清华0    时间: 2013-9-20 10:44
标题: 位运算实现变量自增加1
本帖最后由 王清华0 于 2013-9-20 17:17 编辑

之前看到的一个微软面试题,不使用"+"和"-"实现一个int型变量 a 的自加 1 。因为是不允许用加号和减号,所以像是-(~a)这种 就不用考虑了。之前看到有用循环判断位运算实现的,很精巧,当时看懂了,现在又想不起来了。哪位大神能给个答案?


作者: yting_xmei1129    时间: 2013-9-20 13:33
不知道楼主说的是不是这个------>>>

public int Add(int a,int b) {
                if(b!=0){
                        return Add(a^b,(a&b)<<1);
                }else{
                         return a;
                }
        }
作者: 王清华0    时间: 2013-9-20 17:04
yting_xmei1129 发表于 2013-9-20 13:33
不知道楼主说的是不是这个------>>>

public int Add(int a,int b) {

嗯,运行了一下确实是这个,大神是怎么想到的呢?或者大神的思路是怎么组织的。

作者: 黄文伯    时间: 2013-9-20 17:10
亲,如问题已解决请将分类的“未解决”改为“已解决”。
以后的问题贴也要及时更改分类哦~
作者: yting_xmei1129    时间: 2013-9-20 17:18
先不计进位相加,然后再与进位相加,随着递归,进位会变为0,递归结束、、、
作者: 王清华0    时间: 2013-9-20 17:22
yting_xmei1129 发表于 2013-9-20 17:18
先不计进位相加,然后再与进位相加,随着递归,进位会变为0,递归结束、、、 ...

明白了,谢谢解释。加个好友吧。

作者: yting_xmei1129    时间: 2013-9-20 19:51
恩恩,你QQ多少、、、




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2