前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >剑指Offer的学习笔记(C#篇)-- 不用加减乘除做加法

剑指Offer的学习笔记(C#篇)-- 不用加减乘除做加法

作者头像
WeiMLing
发布2019-08-23 19:46:25
3060
发布2019-08-23 19:46:25
举报
文章被收录于专栏:WeiMLingWeiMLing

题目描述

写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

一 . 理解题目

这个题目可以让我们回归到小学,想想加法的竖式是怎么写的,哈哈,如果当时你不是那个竖式写错了,是不是就不在3班了?是不是就不会在这里写什么这这这..... 海绵宝宝,这就是人生啊。。

回归题目:加法的竖式无非三步走,一、个位数相加;二、个位数进位(或者不进位);三、十位数相加。后面的都是一样了,不一一赘述。

但是,此题目不可用加减乘除,所以要借用二进制数的位运算符。当然目的也是和上面一样,相加(^)与进位(&配合<<1)!!

该题目必须要理解位运算符,可查看这里

第一步:相加不进位(^ 完成)

第二部:进位(&配合<<1)

第三部:判断(当在第二部得出进位的数是0的时候,就可以输出了)

二 . 代码实现

代码语言:javascript
复制
class Solution
{
    public int Add(int num1, int num2)
    {
        // write code here
        while(num2!=0)
        {
            //不进位的二进制加法
            int sum=num1^num2;
            //把位运算符&理解成逻辑运算与;<<为左移运算符,后面跟几就移动几位
            int carray=(num1&num2)<<1;
            num1=sum;
            num2=carray;
        }
        return num1;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-06-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
    • 写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。
    • 一 . 理解题目
    • 二 . 代码实现
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档