首页 > 试题广场 >

另类加法

[编程题]另类加法
  • 热度指数:8051 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

给定两个int AB。编写一个函数返回A+B的值,但不得使用+或其他算数运算符。

测试样例:
1,2
返回:3
头像 大桔骑士v
发表于 2020-07-20 22:37:28
思路 试想二进制0101和1101的相加过程0 1 0 11 1 0 1其实可以看成是不带进位的结果1000和进位产生的1010相加。 而“不带进位的加法”其实就是异或运算,“进位”其实就是只有两个1的时候才会出现,也就是与运算,只是因为进了一位,所以还要往左移动一位。 这样就将两个数相加通过位运算 展开全文
头像 粉星星
发表于 2023-03-31 19:02:18
int addAB(int A, int B) { while (B != 0) { int carry = (unsigned int)(A & B) << 1; // 计算进位部分 A ^= B; // 计算不进位部分 展开全文
头像 阿贝尔的日记
发表于 2022-09-23 17:09:21
另类加法 另类加法 /* 2022年09月21日 11:43:09 异或是不进位的加法 0001 ^ 0011 0010 相与后左移一位即可得到进位的数据 0001 & 0011 0001 << 1 0010 0010 ^ 0010 0000 0010 & 001 展开全文
头像 硌手的小虫子
发表于 2023-03-31 15:55:41
import java.util.*; public class UnusualAdd { public static int addAB(int A, int B) { if(B==0){ return A; } w 展开全文
头像 果粒陈33
发表于 2022-06-20 15:36:18
# -*- coding:utf-8 -*- class UnusualAdd: def addAB(self, A, B): # write code here while B: C = A ^ B B = 展开全文
头像 牛马ID
发表于 2022-05-29 13:51:14
class UnusualAdd { public: int addAB(int a, int b) { // if(a == 0) return b; // if(b == 0) return a; // int on = a ^ b; // 展开全文