剑指Offer——不用加减乘除做加法
题目描述:
写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
分析:
"^"是不带进位的加法。
"&"可以得到所有进位位组成的数。
我们只需要将不进位加后的数与所有进位位组成的数右移一位的结果相加就可以得到和。
不过我们在上面一步的加法过程中,我们也只能用"^"不进位的加法。
所以我们要循环之前的步骤直到不出现进位的情况,这样我们的"^"就和普通加法一样了。
代码:
 class Solution {
 public:
     int Add(int num1, int num2) {
         int a = num1 ^ num2;    // 不进位加
         int b = (num1 & num2) << ; // 要进位位组成的数右移一位
         while(b) {  // 不进位加后的数与要进位位组成的数右移一位的结果相加
             int c = a ^ b;
             b = (a & b) << ;
             a = c;
         }
         return a;
     }
 };
剑指Offer——不用加减乘除做加法的更多相关文章
- 剑指Offer47 不用加减乘除做加法
		
/************************************************************************* > File Name: 47_AddTwo ...
 - 剑指offer--12.不用加减乘除做加法
		
位运算,好久没用了 &:都为1,结果为1 ^:相同为0,不同为1 |:有1,结果为1 <<:左移 ----------------------------------------- ...
 - 剑指Offer-不用加减乘除做加法
		
package Other; /** * 不用加减乘除做加法 * 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. * 思路:位运算 * 1.两个数异或:相当于每一位相加 ...
 - 剑指Offer - 九度1507 - 不用加减乘除做加法
		
剑指Offer - 九度1507 - 不用加减乘除做加法2013-11-29 20:00 题目描述: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 输入: 输入可能包 ...
 - 剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers)
		
剑指offer 65. 不用加减乘除做加法(Leetcode 371. Sum of Two Integers) https://leetcode.com/problems/sum-of-two-in ...
 - 剑指 Offer 65. 不用加减乘除做加法 + 位运算
		
剑指 Offer 65. 不用加减乘除做加法 Offer_65 题目描述 题解分析 java代码 package com.walegarrett.offer; /** * @Author WaleGa ...
 - 【剑指offer】65. 不用加减乘除做加法
		
剑指 Offer 65. 不用加减乘除做加法 知识点:数学:位运算 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用 "+"."-"."* ...
 - 【剑指Offer】不用加减乘除做加法 解题报告(Java)
		
[剑指Offer]不用加减乘除做加法 解题报告(Java) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ...
 - 剑指offer(48)不用加减乘除做加法
		
题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目分析 不用加减乘除做加法,我第一时间想到的就是用位运算,毕竟计算机是二进制的,所有的操作都是以位运算为基础 ...
 
随机推荐
- Ununtu 15.04 安装MySql(Django连接Mysql)
			
本文介绍Ubuntu 15.04下安装MySQL ubuntu 15.04安装mysql django项目连接mysql 一.安装数据库 1.sudo apt-get install mysql-se ...
 - TIM—基本定时器
			
本章参考资料:< STM32F4xx 参考手册>.< STM32F4xx 规格书>.库帮助文档< stm32f4xx_dsp_stdperiph_lib_um.chm&g ...
 - linux  短信收发
			
#include <termios.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h> ...
 - PHP——0128练习相关2——js点击button按钮跳转到另一个新页面
			
js点击button按钮跳转到另一个新页面 投稿:whsnow 字体:[增加 减小] 类型:转载 时间:2014-10-10我要评论 点击按钮怎么跳转到另外一个页面呢?点击图片要跳转到新的页面时,怎么 ...
 - imx lcd HV和DE模式转换
			
有些时候拿到的lcd手册中关于芯片的时序使用的DE模式的,而imx6内核中使用的参数设置趋势HV模式,应此就需要将DE模式的参数转化为HV模式. 参考链接: https://community.nxp ...
 - 嵌入式驱动开发之uboot---uboot 中的常见命令参数参数
			
Uboot相关命令介绍 bootm bootp cmp cp crc32 echo erase flinfo go minfo loadb loads mw 14mw 用指定的数据填充内存 15md ...
 - ubuntu 解压命令全部
			
.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)-------------------------- ...
 - NANDflash和NORflash的区别(设计师在使用闪存时需要慎重选择)
			
NANDflash和NORflash的区别(设计师在使用闪存时需要慎重选择) NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底 ...
 - 【NOIP模拟题】Incr(dp)
			
太水的dp没啥好说的.. #include <cstdio> #include <cstring> #include <cmath> #include <st ...
 - 让rm命令提示确认后再删除
			
首先在~/.bashrc文件中添加一行: # User specific aliases and functionsalias rm='rm -i' 注意,此处 rm 和 = 之间不能有空格,否则会有 ...