首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不使用+运算符将两个数字相加的最佳方法是什么?

不使用+运算符将两个数字相加的最佳方法是什么?
EN

Stack Overflow用户
提问于 2008-12-14 02:13:51
回答 24查看 37K关注 0票数 31

我和一个朋友正在用脑筋急转弯,我不知道如何解决这个问题。我的假设是可以使用一些按位运算符,但不确定。

EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2008-12-13 18:27:20

在C中,使用按位运算符:

代码语言:javascript
运行
复制
#include<stdio.h>

int add(int x, int y) {
    int a, b;
    do {
        a = x & y;
        b = x ^ y;
        x = a << 1;
        y = b;
    } while (a);
    return b;
}


int main( void ){
    printf( "2 + 3 = %d", add(2,3));
    return 0;
}

异或(x ^ y)是不带进位的加法。(x & y)是每一位的进位输出。(x & y) << 1是每一位的进位输入。

循环不断增加进位,直到所有位的进位都为零。

票数 54
EN

Stack Overflow用户

发布于 2008-12-14 06:57:20

代码语言:javascript
运行
复制
int add(int a, int b) {
   const char *c=0;
   return &(&c[a])[b];
}
票数 25
EN

Stack Overflow用户

发布于 2008-12-13 19:09:20

不是吗?

代码语言:javascript
运行
复制
int add(int a, int b) 
{
   return -(-a) - (-b);
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/365522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档