不用算术运算符实现两个数的加法

原创 2015年11月21日 11:22:42

1. 问题描述

不用算术运算符实现两个数的加法。

2. 解答

对于二进制加法运算,若不考虑进位,则1+1=0, 1+0=1, 0+1=1, 0+0=0,通过对比异或,不难发现,此方法与异或类似。因而排除进位,加法可以用异或来实现。
然后考虑进位,0+0的进位是0,1+0的进位为0,只有1+1时进位才为1,该操作与位运算的&操作相似。

那么加法运算可以这样实现:
1)先不考虑进位,按位计算各位累加(用异或实现),得值a;
2)然后计算进位,并将进位的值左移,得值b,若b为0,则a就是加法运算的结果,若b不为0,则a+b即得结果(递归调用该函数)。

3. 参考代码

int add(int a, int b)
{
    if (b == 0) return a; 
    int sum = a ^ b; 
    int carry = (a & b) << 1; 
    return add(sum, carry); 
}

不用+-实现两个数相加

方法一 用逻辑运算 a^b 表示a+b 中每位不进位的和, (a&b) 思想是 两个数字相加中能分解成 不进位的和  + 每一位相加进位 a+b = a^b +(a&b) 如果a&b==0的时候 a...
  • kappen123
  • kappen123
  • 2013年09月06日 18:40
  • 1302

不用算术运算符实现两个数的加法。

(1)先不考虑进位,按位计算各位累加(用抑或实现),得值a; (2)然后计算进位,并将进位的值左移,得值b,若b为0,则a就是加法运算的结果,若b不为0,则a+b即得结果(递归调用该函数);int ...
  • u011954296
  • u011954296
  • 2016年08月25日 11:03
  • 629

不用算术运算符实现两个数的加法操作

对于二进制加法运算,若不考虑进位,则1+1=0,1+0=1,0+1=1,0+0=0,通过对比异或,不难发现,此方法与异或类似。因而排除进位,加法可以用异或来实现。 然后考虑进位,0+0的进位为0,1...
  • ZHUJIANWEILI4
  • ZHUJIANWEILI4
  • 2015年03月25日 23:08
  • 677

java实现不用加减乘除做2个数的加法

public class Solution {     public int Add(int num1,int num2) {          while (num2!=0) {       ...
  • zhouhao88410234
  • zhouhao88410234
  • 2017年05月08日 17:44
  • 284

不用+号实现两个数相加

/* 不用+号实现两个数的相加 思路: 先用10进数表示 449 +598 第一步,两数相加,但不进位得 937 第二步,两数相加,只进位, 0110 第三步,前...
  • zheng0518
  • zheng0518
  • 2013年05月19日 22:44
  • 1569

不用 "%" && "/" 编程实现两个正整数的除法,取余数

题目描述:编程实现两个正整数的除法,当然不能用除法操作符。 // return x/y. int div(const int x, const int y)  {           .......
  • wodeyijia911
  • wodeyijia911
  • 2014年03月03日 21:39
  • 1356

Java实现不用加减乘除做加法

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号...
  • u014282557
  • u014282557
  • 2017年06月02日 14:32
  • 349

[面试题] 不用算术运算符实现两个数的加法

思路:将两个数当作二进制数来处理,比方说6(110)+5(101)=11(1011),可以将二进制的加法过程分成两部分来处理:先不考虑进位求得两数的和(即两数按位异或),然后再将产生的和与进位结果(即...
  • chfe007
  • chfe007
  • 2017年08月23日 16:53
  • 194

汇编 简单的两个一位数相加

本来两个数相加,用c语言写的话。#include int main(){ int i =8,j = 9; printf("%d",i+j); }    到了汇编,第一次写的时候,连...
  • iaiti
  • iaiti
  • 2013年07月17日 00:13
  • 8208

不用算术运算符实现两个数的加法(按位异或)

不用算术运算符实现两个数的加法(按位异或)   对于二进制的加法运算,若不考虑进位,则1+1=0,1+0=1,0+1=1,0+0=0,通过对比异或,不难发现,此方法与异或运算类似。因而排出进位,加法...
  • zdy0_2004
  • zdy0_2004
  • 2015年10月25日 21:32
  • 3770
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:不用算术运算符实现两个数的加法
举报原因:
原因补充:

(最多只允许输入30个字)