不用加减乘除做加法
来源:互联网 发布:vc6.0 mfc编程入门 编辑:程序博客网 时间:2024/06/05 02:56
题目描述
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
算法描述:
如果我们将两个整数相加看作两步位运算即可,举个栗子,19 + 31,二进制为0001_0011 + 0001_1111, 我们先不考虑进位的加法,其实在位运算上和异或相同,则sum = 0001_0011 ^ 0001_1111 = 0000_1100,同时计算进位carry = 0001_0011 & 0001_1111 << 1 = 0010_0110,第二步就将sum 和 carry进行加法操作,直到最后没有进位的时候,加法完成。
代码如下:
public int Add(int num1, int num2) { int sum, carry; do { sum = num1 ^ num2; carry = (num1 & num2) << 1; num1 = sum; num2 = carry; } while (num2 != 0); return num1; }
0 0
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 不用加减乘除做加法
- 安卓入门
- 【Python爬虫7】验证码处理
- 字段验证
- Dynamics CRM 2015-Form之添加Ribbon Button
- FillChar()
- 不用加减乘除做加法
- RSA 加解密算法详解
- 深入浅出CUDA编程
- Python里的OS模块常用函数说明
- Text datatype【官网】
- Easy单例模式
- C#的chart图形
- 【Python爬虫8】Scrapy 爬虫框架
- Java中Synchronized的用法