返回顶部
首页 > 资讯 > 精选 >Java不用算数运算符怎么实现求和
  • 424
分享到

Java不用算数运算符怎么实现求和

2023-06-29 19:06:27 424人浏览 八月长安
摘要

这篇文章主要介绍“Java不用算数运算符怎么实现求和”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java不用算数运算符怎么实现求和”文章能帮助大家解决问题。题目说了不能用算数运算符,那么我们就只能

这篇文章主要介绍“Java不用算数运算符怎么实现求和”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java不用算数运算符怎么实现求和”文章能帮助大家解决问题。

Java不用算数运算符怎么实现求和

题目说了不能用算数运算符,那么我们就只能从 逻辑运算符 和 移位运算符 入手了。

我们知道 ^ (异或)操作是对两个数进行无进位求和,如果两个数相加本来就不产生进位,那么该和就是两数之和。 这就是解题的关键所在。一般来说,两数相加是会产生进位的,而要得到正确的和,应该是在 “无进位之和” 的基础上加上进位,那我们首先应该得到进位。我们知道,当两个数对应位置都为1的情况下,才会有进位的产生,即对应位置 A&B==1的条件下,就可以得到每一位的进位,但是进位是将这个1加到对应的更高一位,所以我们将得到的进位整体进行左移一位,再和之前得到的 “无进位之和” 相加,就可以得到两数之和。

我们发现这里就可以无限套娃了,要得到 “无进位之和” 和 “产生的进位” 之和,那么将这两个数再分别看做新的两个数,对其求和。也是重复之前的操作,直到两数不能产生进位,就可以直接通过 ^ 运算得到结果。

假设我们求 23 + 16 的值

Java不用算数运算符怎么实现求和

Java不用算数运算符怎么实现求和

根据上述思路,我们很容易就可以写出代码

public static int addAB(int A, int B) {// 当两数的产生的进位为 0,就退出循环,返回其无进位和,就是结果        while ((A & B) != 0) {            int A_B = A ^ B;// 无进位求和            int AB = (A & B) << 1;// 得到进位            // 接下来就是求 得到的进位 + 无进位之和,重复前面的操作,直到不产生进位            A = A_B;            B = AB;        }        // 最后返回新的无进位之和        return (A ^ B);    }

那么为了验证它的正确性,我们这里使用对数器,将该函数与 &rsquo; + &rsquo; 运算符比较。

public static void main(String[] args) {    int count = 1_0000_0000;// 比较次数 100000000次    Random random = new Random();// 生成随机数字    boolean flag = true;// 相等则为 true    for (int i = 0; i < count; i++) {        int num1 = random.nextInt(Integer.MAX_VALUE/2);// 随机正数1        int num1_2 = random.nextInt(Integer.MAX_VALUE/2);// 随机正数2        // 随机正数1 + 随机正数2        if ((num1+num1_2) != addAB(num1,num1_2)){            // 有一次不相等的,则退出循环            flag = false;            break;        }        int num2 = -random.nextInt(Integer.MAX_VALUE/2);// 随机负数1        int num2_2 = -random.nextInt(Integer.MAX_VALUE/2);// 随机负数2        // 随机负数1  + 随机负数2        if ((num2+num2_2) != addAB(num2,num2_2)){            // 有一次不相等的,则退出循环            flag = false;            break;        }        int num3 = random.nextInt(Integer.MAX_VALUE);// 随机正数        int num4 = -random.nextInt(Integer.MAX_VALUE);// 随机负数        // 随机正数  + 随机负数        if ((num3+num4) != addAB(num3,num4)){            // 有一次不相等的,则退出循环            flag = false;            break;        }    }    System.out.println(flag);}

运行结果:

Java不用算数运算符怎么实现求和

最后输出结果为 true ,说明我们计算随机产生的 正数+正数、负数+负数、正数+负数 分别100000000次,没有一次出错,说明该函数可靠。

关于“Java不用算数运算符怎么实现求和”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: Java不用算数运算符怎么实现求和

本文链接: https://lsjlt.com/news/326273.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java不用算数运算符怎么实现求和
    这篇文章主要介绍“Java不用算数运算符怎么实现求和”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java不用算数运算符怎么实现求和”文章能帮助大家解决问题。题目说了不能用算数运算符,那么我们就只能...
    99+
    2023-06-29
  • Java不用算数运算符来实现求和方法
    今天遇到了这样一个题 题目说了不能用算数运算符,那么我们就只能从 逻辑运算符 和 移位运算符 入手了。 我们知道 ^ (异或)操作是对两个数进行无进位求和,如果两个数相加本来就不产...
    99+
    2024-04-02
  • JavaScript运算符、 算数运算符、赋值运算符怎么用
    这篇文章主要介绍“JavaScript运算符、 算数运算符、赋值运算符怎么用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript运算符、 算数运算符、...
    99+
    2024-04-02
  • JavaScript算数运算符、运算符和操作数是什么
    今天小编给大家分享一下JavaScript算数运算符、运算符和操作数是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收...
    99+
    2024-04-02
  • 一元运算符怎么利用Java实现
    这篇文章给大家介绍一元运算符怎么利用Java实现,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一元运算符,也叫单项算符,一目运算符,一元算符 ,英文名字:UnaryOperator。描述:接受一个参数为类型T,返回值类...
    99+
    2023-05-31
    java 一元运算符 ava
  • Java怎么用位运算实现加减运算
    这篇文章主要讲解了“Java怎么用位运算实现加减运算”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java怎么用位运算实现加减运算”吧!思路分析先分析如何用位运算实现加法运算。示例假设a=2...
    99+
    2023-07-04
  • Java怎么用位运算实现乘法运算
    这篇文章主要介绍了Java怎么用位运算实现乘法运算的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java怎么用位运算实现乘法运算文章都会有所收获,下面我们一起来看看吧。十进制相乘例如,26 * 15,在进行乘法...
    99+
    2023-07-06
  • C#的sizeof运算符和三元运算符怎么用
    本文小编为大家详细介绍“C#的sizeof运算符和三元运算符怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#的sizeof运算符和三元运算符怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。实例usi...
    99+
    2023-06-17
  • java运算符怎么使用
    四则运算符四则运算当中的加号“+”有常见的三种用法:对于数值来,那就是加法。对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算。char类型字符,和int类型数字之间的对照关系比表:ASCII,Unicode对于字...
    99+
    2019-02-24
    java入门 java 运算符 使用
  • C#中怎么通过运算符重载实现复数运算
    今天就跟大家聊聊有关C#中怎么通过运算符重载实现复数运算,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#运算符重载实现复数运算的由来:函数的重载——同名函数,不同的参数(包括参数个...
    99+
    2023-06-18
  • php运算符运用之类型运算符怎么用
    这篇文章将为大家详细讲解有关php运算符运用之类型运算符怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。类型运算符指的是instanceof。instanceof运算符是php5引进的。在此之前用is...
    99+
    2023-06-20
  • Python3中* 和 ** 运算符怎么用
    这篇文章给大家分享的是有关Python3中* 和 ** 运算符怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pil...
    99+
    2023-06-14
  • python不等于运算符怎么用
    这篇文章主要为大家展示了“python不等于运算符怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python不等于运算符怎么用”这篇文章吧。Python not equal operato...
    99+
    2023-06-22
  • Java关系运算符怎么使用
    本篇内容主要讲解“Java关系运算符怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java关系运算符怎么使用”吧!运算符 1:“等于”运算符 (==)运算符 2:“不等于”运算符(!=)...
    99+
    2023-06-21
  • Java语言中运算符怎么用
    本文将为大家详细介绍“Java语言中运算符怎么用”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“Java语言中运算符怎么用”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧...
    99+
    2023-06-26
  • Java中关系运算符怎么用
    这篇文章给大家分享的是有关Java中关系运算符怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。public class Operation3 {public stati...
    99+
    2023-06-02
  • Java中赋值运算符怎么用
    小编给大家分享一下Java中赋值运算符怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!public class Operation2 {public static vo...
    99+
    2023-06-02
  • C#怎么实现运算符重载
    本篇内容介绍了“C#怎么实现运算符重载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!运算符重载的实现下面的程序演示了完整的实现:using&...
    99+
    2023-06-17
  • C#的算术运算符怎么用
    这篇文章主要介绍“C#的算术运算符怎么用”,在日常操作中,相信很多人在C#的算术运算符怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#的算术运算符怎么用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧...
    99+
    2023-06-17
  • MYSQL——常用运算符和函数
       MYSQL的常用运算符1   字符函数   CONCAT()    字符连接   CONCAT_W&#...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作