我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java怎么用位运算实现乘法运算

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java怎么用位运算实现乘法运算

这篇文章主要介绍了Java怎么用位运算实现乘法运算的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么用位运算实现乘法运算文章都会有所收获,下面我们一起来看看吧。

十进制相乘

例如,26 * 15,在进行乘法操作时,我们一般这样算,先用5乘以6得到30,把0写下把3记在一边,再用5乘以2得到10再加上之前的3写在下面,得到130;计算完5再计算1分别乘以62把得到的结果26记在下面,然后把13026相加(有错位)得到390

Java怎么用位运算实现乘法运算

二进制相乘

看完了十进制的相乘,再来看下二进制的相乘,基本原理是一样的,也是以十字相乘法为例,计算 5 * 7

5的二进制为1017的二进制为111,来看下二进制的十字相乘法。

Java怎么用位运算实现乘法运算

可以看到二进制为101和二进制111用传统的方式来计算,得到的结果为100011,而二进制100011对应的十进制为35
所以说,在计算的过程中,十进制和二进制的计算方式是一样的,当然这里就不进行举例和证明了。

思路分析

既然计算过程有了,那么怎么样用代码来实现呢?

我们再来看下上图中二进制的计算过程:

  • 先用二进制111的最后一位1 乘上 101 得到 101

  • 再用二进制111的倒数第2位1 乘上 101 得到 101

  • 再用二进制111的倒数第3位1 乘上 101 得到 101

  • 得到的三个101进行二进制相加,得到 100011

注意,第2步和第3步得到的结果101都往前挪了一位,相当于101010100,也就是最后相加的计算为:10100 + 1010 + 101 = 100011

再来看得到最终相加的计算10100 + 1010 + 101 = 100011,也就是只要我们找到如何把数据转换为几位数的相加就可以了,因为之前已经实现了如何用位运算实现加法操作。

这三个数101101010100的数量刚好与二进制111的个数相同,也就是二进制(上图下面那个乘数111)有几位就会产生几个数相加,如果是与11111相乘就会产生5个数相加。

再来看数据之前的关系:

  • 第一次相乘结果:101 = 101 + 0

  • 第二次相乘结果:1111 = 101 < 1 + 101 = 1010 + 101

  • 第三次相乘结果:100011 = 101 < 2 + 1111 = 10100 + 1010 + 101

从这里我们可以看到,每计算一次,101只需要向左移一次再加上上一次的计算结果就可以了。

那么,怎么知道要左移多少次呢?从这里例子中看,111每次计算后,向右移动一次,101也跟着向左移动一次,直到111只剩最后一位,则停止计算就好了。

代码实现

根据上面的思路,来实现一下代码:

// 用位运算实现加法public static int add(int a, int b) {    int sum = 0;    while (b != 0) {        sum = a ^ b;        b = (a & b) << 1;        a = sum;    }    return sum;}// 用位运算实现减法public static int multi(int a, int b) {    int res = 0;    while (b != 0) {        if ((b & 1) != 0) {            res = add(res, a);        }        a <<= 1;        b >>>= 1;    }    return res;}

运行一下代码,看下结果:

Java怎么用位运算实现乘法运算

可以看到计算是正确的,而且还支持负数。

关于“Java怎么用位运算实现乘法运算”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Java怎么用位运算实现乘法运算”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java怎么用位运算实现乘法运算

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java怎么用位运算实现乘法运算

这篇文章主要介绍了Java怎么用位运算实现乘法运算的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么用位运算实现乘法运算文章都会有所收获,下面我们一起来看看吧。十进制相乘例如,26 * 15,在进行乘法
2023-07-06

Java利用位运算实现乘法运算详解

这篇文章主要为大家详细介绍了Java如何用位运算实现乘法运算,在实现乘法时要用位运算实现,并且不能出现加减乘除任何符号,感兴趣的可以了解一下
2023-05-15

PHP中怎么使用位运算实现加减乘除运算

这篇文章主要介绍了PHP中怎么使用位运算实现加减乘除运算,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。计算机最基本的操作单元是字节,一个字节由8个位组成,一个位只能存储一个0
2023-06-20

Java怎么用位运算实现加减运算

这篇文章主要讲解了“Java怎么用位运算实现加减运算”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么用位运算实现加减运算”吧!思路分析先分析如何用位运算实现加法运算。示例假设a=2
2023-07-04

php怎么实现乘法运算

在PHP中,可以利用“*”算术运算符实现乘法运算,该运算符用于计算前后两个数的乘积,语法为“乘数1*乘数2”。
2015-11-01

Java使用位运算实现加减乘除详解

这篇文章主要为大家详细介绍了Java如何使用位运算实现加减乘除,文中的示例代码讲解详细,对我们深入了解Java有一定的帮助,感兴趣的可以了解一下
2023-05-19

java如何使用位运算代替乘除法

这篇文章主要介绍了java如何使用位运算代替乘除法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。位运算代替乘除法在所有的运算中,位运算是最为高效的。因此,可以尝试使用位运算代
2023-06-27

Java利用位运算实现加减运算详解

这篇文章主要为大家介绍了如何使用位运算来实现加减功能,也就是在整个运算过程中不能出现加减符号。文中的示例代码讲解详细,感兴趣的可以了解一下
2022-12-31

php如何实现乘法运算

本篇内容主要讲解“php如何实现乘法运算”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php如何实现乘法运算”吧!在PHP中,可以利用“*”算术运算符实现乘法运算,该运算符用于计算前后两个数的乘
2023-06-29

怎么在python中实现矩阵乘法运算

今天就跟大家聊聊有关怎么在python中实现矩阵乘法运算,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相
2023-06-14

Java如何实现位运算

这篇文章主要介绍了Java如何实现位运算,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。public class Operation5 {public static void
2023-06-02

python中怎么利用numpy.dot实现点乘运算

python中怎么利用numpy.dot实现点乘运算,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。说明1、对于两个一维数组,计算这两个数组对应下标元素的乘积和(
2023-06-20

php怎么实现加减乘除的运算

php实现加减乘除运算的方法:1、创建一个php示例文件;2、定义两个变量为“$x”和“$y”;3、通过“$x+$y”,“$x-$y”,“$x*$y”及“$x/$y”公式实现加减乘除运算;4、使用“echo”输出运算结果即可。
2023-05-14

JavaScript位运算符怎么运算的

JavaScript中的位运算符用于对数字的二进制表示进行操作。下面是常见的位运算符及其运算方式:1. 按位与(&):对两个数字的每个位执行逻辑与操作,只有两个位都为1时,结果才为1。例如:10 & 6 的结果为 2,因为10的二进制表示为
2023-10-11

C++高精度乘法运算的实现

本文主要介绍了C++高精度乘法运算的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-01-13

如何正确使用 Java 移位运算符?(java移位运算符怎么使用)

在Java编程中,移位运算符是一种非常重要且常用的操作符,它允许我们对二进制数进行左移或右移操作。正确使用移位运算符可以在某些情况下提高代码的效率和性能。本文将详细介绍Java移位运算符的使用方法,并通过代码示例来帮助读者更好地理解。一、移位运算符的种类
如何正确使用 Java 移位运算符?(java移位运算符怎么使用)
Java2024-12-20

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录