实现方法:采用二进制的移位

思路:比如两个整数 a = 9 和 b = 19 相乘,将 a 每次除以 2 (右移 1 位,即 a >> 1),b 每次乘以 2 (左移 1 位,即 b << 1),当 a 为奇数的时候,就累加 b 的值到 sum (sum 初始化为 0),即 sum = sum + b;最后 a 的值肯定会有等于 1 的时候,此时把 b 的值累加到 sum 上即为最后 a * b 的值。

以上面的 a = 9,b = 19,为例,首先初始化 sum = 0,判断 a 是否为奇数(让 a 和 1 做逻辑与运算,
a & 1,如果结果不为 0 ,那么 a 为奇数),此时 a = 9 是奇数,则 sum = sum + b = 19;然后 a 除以 ,b 乘以 2 得 a = 4,b = 38,此时 a = 4 为偶数,继续移位,a 除以 2 ,b 乘以 2 得 a = 2,b = 76; 此时 a = 2 为偶数,继续移位,a 除以 2 ,b 乘以 2 得 a = 1,b = 152,此时 a 为奇数,执行 :
sum = sum + b = 19 + 152 = 171
最后 a 除以 2 (右移 1 位)得 0 ,结束运算,最后结果为 171 。

代码

int multiply(int a, int b) {int sum = 0;while (a) {if (a & 1 == 1) { sum = sum + b;}a = a >> 1;      // a 右移b = b << 1;      // b 左移}return sum;
}

不用乘号实现两个正整数的乘法相关推荐

  1. 不用乘号除号,算乘法除法

    代码出处:解析 不用乘号算乘法 倍增乘法: long mul(long a, long k) {long ans = 0;while (k > 0) {if ((k & 1) == 1) ...

  2. python 乘法不用乘号_递归算法之不用乘号的乘法——用位移实现乘法(dart语言实现)...

    前两天突发奇想,写一个乘法的实现,但不用乘号*.并测试一下性能如何.因此就有了下面的代码:(本文主要目的是为了玩递归和位移,因此仅限自然数) 首先,标准乘法: 1 int commonMultipli ...

  3. 两数相乘:但是不用*号。如何不用*符号的两数相乘

    文章目录 前言 一.题目描述 二.思路和代码 方法一.递归 方法二.快速乘(俄罗斯农民乘法) 前言 今日力扣算题遇到一个有趣的题目         如何不用 * 运算符,实现两正数相乘         ...

  4. c语言两个正整数的最小公倍数,C语言求两个正整数的最小公倍数

    这里将介绍求两个正整数的最小公倍数(Least Common Multiple,LCM)的方法.提供两种主要思路,一种是直接根据最小公倍数的定义设计算法,一种是由最大公约数计算得出.下面来介绍这两种方 ...

  5. C语言编程>第一周 ⑧ 输入两个正整数m和n,求其最大公约数和最小公倍数。

    例题:输入两个正整数m和n,求其最大公约数和最小公倍数. 代码如下: /*程序分析:利用辗除法.*/ #include"stdio.h" main() {int a,b,num1, ...

  6. C语言—超长正整数的乘法实现简洁版

    今天给大家带来一道题目: 使用数组完成两个超长(位数长度小于 100)正整数的乘法. 从键盘输入两个正整数,输出乘法计算的结果. 题目看起来字很少,可这逻辑过程却不少. 我们知道,不管是 int 还是 ...

  7. C语言求两个正整数的最小公倍数

    这里将介绍求两个正整数的最小公倍数(Least Common Multiple,LCM)的方法.提供两种主要思路,一种是直接根据最小公倍数的定义设计算法,一种是由最大公约数计算得出.下面来介绍这两种方 ...

  8. C语言例题:输入两个正整数m和n,求其最大公约数和最小公倍数。

    题目:输入两个正整数m和n,求其最大公约数和最小公倍数. 方法一:短除法 理论参考:百度知道 #include <stdio.h> int main() {int m, n; // 两个输 ...

  9. Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数

    ylbtech-Arithmetic:Console-算法[if,while]-一输入两个正整数m和n,求其最大公约数和最小公倍数 1.A,Demo(案例) 输入两个正整数m和n,求其最大公约数和最小 ...

最新文章

  1. T-SQL Convert转换时间类型
  2. vb mysql数据导入到mssql,[请教]怎样把*.txt文本的数据导入sql数据库中?
  3. Python常用函数与技巧总结(三)
  4. ScrollView嵌套ListView处理事件冲突
  5. 剑指offer 算法(数组 字符串)
  6. MySQL事务的读脏
  7. 女人跳槽:最重要的是你的独立,你的快乐
  8. 解决git clone报错SSL certificate problem
  9. 【LightOJ - 1027】A Dangerous Maze(概率dp,数学期望)
  10. anki卡片重复_如何在Anki中使用间隔重复来学习更快的编码
  11. smarty模板基础
  12. SQL NOTE-VARIABLE
  13. oracle没有网卡驱动,联想台式机网卡驱动,手把手教你联想台式机网卡驱动
  14. Windows10中microsoft商店打不开解决办法
  15. 华硕飞行堡垒扬声器没声音_华硕玩游戏没声音_华硕飞行堡垒玩游戏卡
  16. 预处理器 - 记号传递操作符##
  17. 基于中国剩余定理的秘密共享方案(miracl)
  18. 计算机网络实验之验证性实验
  19. 2021年危险化学品生产单位安全生产管理人员考试试卷及危险化学品生产单位安全生产管理人员实操考试视频
  20. R语言使用ggplot2绘制直方图

热门文章

  1. iOS 自带定位服务
  2. windows路由设置(NAT)
  3. 在java软件行业中,没有经验真的好难找。
  4. Override,OverWrite和Overload的区别和含义
  5. Override和Overload的含义和区别
  6. JS 方法名 起名要谨慎
  7. 【推荐实践】腾讯-推荐系统中的深度匹配模型
  8. Unity屏幕雪花另类实现方式
  9. Django版本查看方式
  10. 高调创业者和成功创业者有什么区别?