Java别说取余(%)运算简单,你真的会吗?

您所在的位置:网站首页 60-30除以4等于几 Java别说取余(%)运算简单,你真的会吗?

Java别说取余(%)运算简单,你真的会吗?

2024-06-02 07:48:09| 来源: 网络整理| 查看: 265

前言:发现有不少人阅读了这篇文章,并且,指出了文章中存在的问题。其实,我本人好久之前也觉得文章的介绍有部分问题,且不够简洁,一直想着做出修改,却一拖再拖。最近两天(2021年7月22日),又接触了取模和取余的相关知识,同时取模和取余有相似之处,也都很容易遇到,所以一起介绍。觉得时机成熟了,是时候对本文做出完善了。

一 取余和取模的定义

对于整型数a,b来说,取模运算或者取余运算的方法都是:

求整数商: c = a/b计算模或者余数: r = a - c*b

取余运算在取c的值时,向0的方向舍入;取模运算在计算c的值时,向负无穷方向舍入

如下图所示:如果c(即a/b的商)的结果为正数,如1.5,那么对于取余和取模的处理是相同的,c舍入后的结果都为1;如果c的结果为负数,如-1.5,那么对于取余是向0的方向舍入,c舍入后的结果为-1,但是,对于取模是向负无穷的方向舍入,舍入后的结果为-2;

在这里插入图片描述 取个例子,3 % -2 c = a / b = 3/-2 = -1.5 c向0的方向舍入为-1 r = a - c * b = 3 - (-1) * (-2) = 1 即3 % -2 = 1

二 取余的规律总结

考虑了a和b可能出现的几乎是所有的情况(除了a等于b的情况,其取余等于0),这样总结的规律更有普遍性。

package com.company.app; public class RemTest { public static void main(String[] args) { // a的绝对值大于b System.out.println(" 2 % 3 = " + 2 % 3); System.out.println("-2 % 3 = " + (-2) % 3); System.out.println(" 2 %-3 = " + 2 % (-3)); System.out.println("-2 %-3 = " + (-2) % (-3)); System.out.println(); // a的绝对值小于b System.out.println(" 3 % 2 = " + 3 % 2); System.out.println("-3 % 2 = " + (-3) % 2); System.out.println(" 3 %-2 = " + 3 % (-2)); System.out.println("-3 %-2 = " + (-3) % (-2)); } }

运行结果如下: 在这里插入图片描述 规律:先使用a的绝对值和b的绝对值进行取余运算(或理解成先去掉符号也可以,并且两个正数的取余运算相对容易),然后取余的结果正负号和a保持一致。

我们可以进一步总结出如果a的绝对值小于b的绝对值,则余数就是a。本质还是通过上面的规律计算出来的。

有时候面试题中会让我们计算a/b的商和余数,我们根据上面的计算结果继续总结(可以验算 除数=商*被除数 + 余数):

表达式 除数a / 被除数b商余数2 / 302-2 / 30-22 / -302-2 / -30-23 / 211-3 / 2-1-13 / -2-11-3 / -21-1

当a的绝对值小于b时,商0,余数为a; 当a的绝对值大于b时,先使用a的绝对值和b的绝对值进行运算,得出商和余数。商的符号,除数a和被除数b的符号相同则为正,不同则为负。余数的符号取决于除数a。

三 取模的规律总结

Java编程语言的%运算实现的是取余运算,而Python编程语言的%运算实现的是取模运算(注意,虽然使用符号相同,但是表示的却是不同的运算)。目前,还未学习Python,本地没有编程环境,使用在线的编辑器运行该代码及其运行结果如下所示: 请添加图片描述

表达式 a mod b (这里mod 表示取模运算)模2 mod 32-2 mod 312 mod -3-1-2 mod -3-23 mod 21-3 mod 213 mod -2-1-3 mod -2-1

当a和b同号时,先用|a|取余|b|,结果和b的正负号保持一致;

举个例子(下列例子中%表示取余运算,mod表示取模运算,|a|表示a的绝对值,或者理解为去除正负号的a,我们关心的是数值):

a mod b 2 mod 3 --> 2 % 3 = 2 --> 2 (结果和b的正负号保持一致,下同不赘述) 3 mod 2 --> 3 % 2 = 1 --> 1 -2 mod -3 --> 2 % 3 = 2--> -2 -3 mod -2 --> 3 % 2 = 1 --> -1

当a和b异号时,使得|b|>|a|(即如果|b||a|)然后|b|-|a|,结果和b的正负号保持一致;

a mod b -2 mod 3 --> 3 - 2 = 1 --> 1(结果和b的正负号保持一致,下同不再赘述) 2 mod -3 --> 3 - 2 = 1 --> -1 3 mod -2 --> (2 -1 -3 mod 2 --> (2 1

对上述累加|b|进一步说明,如果100 mod -3,累加3直到大于100为止,这只是为了方便描述,我们一眼可以看出33 * 3 < 100,那这个数就是34 * 3呗。本质就是n|b|>|a|,求n最小值,n|b|就是我们最终要的值。

最后,检测一下自己学会了吗?

表达式中%表示取余或取模取余结果取模结果3 % 7-3 % 73 % -7-3 % -77 % 3-7 % 37 % -3-7 % -3

下滑查看答案,也可以自己编程验证:)

2021-7-22更新: 一 取余和取模的定义 二 取余的规律总结

2021-10-12更新: 三 取模的规律总结

四 答案 表达式中%表示取余或取模取余结果取模结果3 % 733-3 % 7-343 % -73-4-3 % -7-3-37 % 311-7 % 3-127 % -31-2-7 % -3-1-1

以下内容同上,不建议阅读 一,直击现场

下面我来抛出几道题: 说明m是商,n是余数; (1)正数%正数 3%2=m…n 2%3=m…n (2)正数%负数或者负数%正数 -3%2=m…n 3%-2=m…n -2%3=m…n 2%-3=m…n (3)负数%负数 -3%-2=m…n -2%-3=m…n

二,验证时刻

下面的结果没有商m只有余数n;有没有全部答对呢?没有的话来看总结吧 这里写图片描述

三,总结

(1) 3%2=1…1 2%3=0…1 正数除以正数:

商正余正

(2) -3%2=-1…-1 3%-2=-1…1 -2%3=0…-2 2%-3=0…2 除数或者被除数其中之一为负数:

先按正数计算,商负余同被除数

(余数和被除数同号)你可能对结果0有疑问,你可以把它当成负0,因为被除数=除数*商+余数,所以被除数是希望商乘以除数的结果是接近它的(如最后一组数被除数2是希望-3乘以0后的结果是接近它的,所以可以理解为0是负0,这样就普遍适用了) (3) -3%-2=1…-1 -2%-3=0…-2 两个数都是负数:

先按正数计算,商正余负

(对于第二组可理解为0是正0,解释同上)



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭