【概念混淆】取余运算和取模运算

[深入浅出C语言]理解取整、取余和取模 给出一个定义: 如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数 q 和 r,满足 a = q*d + r 且0 ≤ r < d。其中,q被称为商,r 被称为余数,取模运算求取的就是这个余数r。return 0;}结果显而易见会是1,那如果改成下面这样结果又会如何?int main(){//改成负数了int b = 3;return 0;}2>>> 阅读详情

   笔者之前一直把取余和取模运算混淆,甚至认为这两者是同一种事物,各种资料说法就更不统一了。其实取余是数学运算,取模是计算机运算。记得在上小学的时候,学过余数,那时候还没有学负数。比如 7 除以 4 等于 1,余 3;10 除以 3 等于 3,余 1。很简单,余数要小于除数。(引入负数的概念之后,余数的绝对值要小于除数的绝对值)下面就说一下求余运算的原理吧。

   对于 n 和 p,总能表示成n = k*p + r,也就是 n 除以 p 等于 k,余 r。

   对于整型数a,b来说,取模运算或者求余运算的方法都是:
   1.求整数商: c = a/b;
   2.计算模或者余数: r = a - c*b.
   求模运算和求余运算在第一步不同: 取余运算在取c的值时,向0方向舍入(fix()函数);而取模运算在计算c的值时,向负无穷方向舍入(floor()函数)。
   例如:计算-7 Mod 4,那么:a = -7;b = 4;数学运算 a ÷ b = -7 ÷ 4 = -1.75。
   第一步:求整数商c,如进行求模运算c = -2(-1.75向负无穷方向舍入),求余c = -1(-1.75向0方向舍入);
   第二步:计算模和余数的公式相同,但因c的值不同,求模时r = 1,求余时r = -3。
   归纳:当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。当符号不一致时,结果不一样。求模运算结果的符号和b一致,求余运算结果的符号和a一致。因为,a和b符号一致,商为正数,负无穷和0都在商的同一方向。

   另外各个环境下%运算符的含义不同,比如c/c++,java 为取余,而python则为取模。


Java取余与取模运算深度解析:从数学原理到实战避坑指南 在编程中,取余和取模是处理整数除法后剩余部分的基础运算,它们直接影响循环控制、哈希计算和周期处理等核心功能。从数学原理看,取余运算遵循向零取整规则,余数符号与被除数相同;而取模运算采用向下取整,余数符号与除数一致。这种差异在正数运算时结果相同,但遇到负数就会产生截然不同的结果,这正是许多隐蔽Bug的根源。在Java语言中,%运算符被明确定义为取余运算,这符合JVM底层指令的优化实现。然而在实际工程中,如循环缓冲区、哈希映射和日期计算等场景,往往需要的是取模运算的环绕特性。理解这一区别,掌握Math.floo 阅读详情

相关推荐

【取模与求余】附(OJ:斐波那契数列)

本文深入解析取模(Modulo)与求余(Remainder)运算的核心差异,指出两者在正数运算时结果相同,但负数运算时遵循不同符号规则(取模结果与除数同号,求余与被除数同号)。文章通过数学定义、实例对比和编程语言实现(Python采用取模,C/Java等使用求余),说明实际应用场景如循环索引、哈希函数等通常更适合取模运算。此外,提供斐波那契数列计算示例,展示模运算在大数处理中的实际应用,并给出不同语言间运算转换的方法。理解这些差异对编程和算法设计至关重要。

Kratzdisteln的博客 944

【linux系统编程基础知识-Shell脚本学习笔记6-整数数算】

• expr操作符:+、-、\*、/、%取余(取模)expr 1 +2 * 3 错误,应该写为。---除时,如果结果有小数,则截取小数部分。• $算式运算符:+、-、*、/、()练习:编写脚本实现一个加法计算器。6.3.【整数运算-练习脚本】6.4.【整数运算- 使用$】6.5.【整数运算- 练习题】

dai9812的博客 603

同余运算核心性质全解析:从模运算原理到密码学与工程实战

模运算(Modular Arithmetic)是计算机科学和离散数学中的基础概念,它研究整数除以某个正整数(模数)后的余数关系。其核心原理在于将无限的整数集映射到一个有限的剩余类集合上,从而在有限域内进行运算。这一特性赋予了模运算极高的技术价值:它能将复杂的大数运算简化为小范围计算,有效防止数据溢出,并天然地处理周期性、循环性问题。在应用场景上,模运算是现代密码学(如RSA算法、Diffie-Hellman密钥交换)的基石,用于实现加密、解密和密钥生成。同时,它也广泛应用于校验码设计(如CRC、ISBN号)

weixin_30628801的博客 551

linux 求余数_Linux的bc命令:计算器

bc 命令是任意精度计算器语言,通常在linux下当计算器使用,可以做基本的数学运算。在终端输入 bc 命令,即可进入 bc 进行交互式的数学计算,如下图所示。输入quit退出。在Shell编程中,也可以通过管道和输入重定向来使用bc。bc 在默认情况下是交互式的指令,在 bc 环境下,可以使用以下计算符号:加法:+减法:-乘法:*除法:/指数:^余数:%bc 也支持以下函数:求平方根:sqrt(...

weixin_39758048的博客 3049

模运算:从时钟算术到RSA加密,程序员必须掌握的数学工具

模运算(Modular Arithmetic)是计算机科学中处理周期性问题和有限范围计算的基础数学工具,其核心原理是在一个固定的模数下进行运算,结果始终落在0到模数减1的范围内。这种运算在加法、减法和乘法上保持同余性质,为处理大数运算和防止整数溢出提供了有效方法。在技术价值上,模运算不仅是哈希表实现、循环冗余校验等基础算法的关键,更是现代密码学的基石,特别是在非对称加密领域。例如,RSA算法的安全性完全依赖于大数模幂运算的不可逆性,而快速模幂算法和乘法逆元计算则是实现高效加解密的核心。在实际应用场景中,从分

weixin_34037515的博客 422

C语言%符号全解析:取余运算与格式化输入输出的核心技巧

在C语言编程中,运算符和格式化输出是基础且核心的技术概念。取余运算符(%)基于整数除法的原理,用于计算两数相除后的余数,其技术价值在于实现周期性操作、范围限定和数据映射,广泛应用于循环控制、哈希函数和数字处理等场景。格式化输入输出则通过格式说明符(如%d, %s)控制数据的解析与呈现,是构建用户界面和数据交换的关键。本文聚焦于C语言中“%”符号的多重角色,深入探讨其作为算术运算符实现取余运算的逻辑,以及作为格式说明符在printf和scanf函数中格式化数据、防止缓冲区溢出的工程实践,并结合循环边界处理和输

weixin_33970449的博客 435

Linux中的算术运算

快捷查看指令 ctrl+f 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,博主会及时修改)

weixin_52198548的博客 2130

从‘幂的末尾’到RSA加密:聊聊模运算在信息学竞赛和真实编程里的那些事儿

本文探讨了模运算在信息学竞赛和工业实践中的关键作用,从解决‘幂的末尾’问题到RSA加密算法的实现。通过快速幂算法、同余定理和费马小定理等数学工具,展示了模运算在编程竞赛和网络安全中的高效应用。文章还深入分析了RSA加密的核心步骤和优化技巧,以及模运算在CRC校验、伪随机数生成和哈希函数设计中的多样化应用。

weixin_30911451的博客 429

Linux初识shell脚本

Linux初识shell脚本 风吹柳叶遮黄雀,薄翅不觉已落蝉

xizifeiyu的博客 506

位运算与模运算在数组操作中的实战应用

位运算作为计算机基础运算之一,通过直接操作二进制位实现高效计算,在权限控制、哈希优化等场景有广泛应用。其核心原理是利用AND、OR等逻辑运算符对二进制位进行操作,具有O(1)时间复杂度的优势。模运算则常用于分布式系统和密码学领域,通过取余操作保证数值范围。当二者结合数组操作时,能高效解决期望值计算、动态查询等问题。本文以按位与和模运算为例,解析如何利用位掩码、概率计算等技巧处理变化的数组问题,展示这些基础运算在算法优化中的实际价值。

weixin_30458043的博客 352

基于分块矩阵乘法与模运算的彩色图像加密方案详解与Matlab实现

图像加密是信息安全领域的重要分支,其核心目标是通过算法实现信息的混淆与扩散,以保护多媒体数据的机密性。混淆旨在使密文与密钥间的关系复杂化,而扩散则要求明文的微小变动能引发密文的广泛改变。矩阵运算,特别是分块矩阵乘法,因其强大的结构化扩散能力,常被用于构建加密算法的骨架。然而,直接的矩阵运算结果可能超出图像像素值的有效范围(0-255),此时模运算便扮演了关键角色,它不仅能将结果归一化至有效区间,其引入的非线性特性也进一步增强了算法的混淆强度。这种结合了矩阵运算与模运算的技术路径,为设计兼具教学意义与实践价值

weixin_28607671的博客 249

2.3 模运算

模的概念模运算是一种算术运算,常写作a mod n,表示整数a除以正整数n后的余数。模数是模运算中的除数n,它决定了结果的范围。公式表达a = qn + r,其中0 ≤ r < n,q是整数商,即q = ⌊a/n⌋。a除以n的余数是a mod n。示例(11除以7的余数是4)(-11除以7的余数是3)剩余类集合(模n的剩余类)每个整数表示一个剩余类: [0],[1],…,[�−1][0],[1],…,[n−1]

tang7mj的博客 1万+

openlayers6【十九】vue HeatmapLayer热力图层实现热力图效果详解

文章目录1. 写在前面2. Heatmap 类实现热力图2.1 Heatmap 参数2.2 实现热力图3. 完整代码4. 添加删除map图层的方法5. 热力图自身的get,set方法 1. 写在前面 我们主要看热力图的效果,区域绘制效怎么设置详细内容可以访问 openlayers6【十七】vue VectorLayer矢量图层画地图省市区,多省市区(粤港澳大湾区)效果详解 在 openlayers 中,图层是使用 layer 对象表示的,主要有 WebGLPoints Layer、热度图(HeatMap L

@必意玲 1万+

C++中的 求模运算 和 求余运算

盘点C++中的求模运算和求余运算 引入 先看看几个问题: // 下面三个表达式的结果分别是多少? 3 / 1 3 / -1 -3 / 1 // 其中u的值是多少? unsigned u = -1; 要回答这几个问题,就必须了解C++中的求模运算和求余运算 求模运算和求余运算这两个概念,大多数人乍一听都觉得是差不多的 事实上,求模运算和求余运算 实际上还是有一定的区别的 求余运算和求模运算 求余运算和求模运算概念很相似,容易混淆 不同点: 求余运算商向0取整 如-5对3求余: (-5)

u011541325的博客 3155

突发环境事件怎么模拟?用Python+GIS实现高斯烟团模型(附完整代码)

本文详细介绍了如何利用Python与GIS技术实现高斯烟团模型,用于模拟化工泄漏等突发环境事件的动态扩散过程。通过核心原理讲解、参数快速获取方案、Python代码实现及GIS可视化集成,为环境应急人员提供了一套完整的解决方案。特别适合危险品运输事故等瞬态污染场景的应急决策支持。

weixin_33692284的博客 486

(1)大蚂蚁即时通讯

即时通讯软件BigAnt(大蚂蚁)是杭州艾朴软件推出的一个”企业级”的即时通讯平台。该平台专为企业,其他企事业单位和政府单位而设计,目的就是为了增强内部沟通能力,提高内部员工的工作效率;同时服务器就直接置于单位内部,所有信息由单位自己管理,让单位以更安全、更可伸缩和更易于管理的方式灵活方便地使用协同和通信服务的功能! BigAnt(大蚂蚁)即时通讯软件包括服务器端和客户端。客户端功能包括单位

少安的砖厂 2234

⭐️Python中负数取余操作的深入解析——《跟老吕学Python编程》附录资料

取余操作,也称为模运算,是指求两个数相除后的余数。数学上,对于任意整数 ( a ) 和 ( n ),其中 ( n \neq 0 ),存在唯一的整数 ( q ) 和 ( r ) 使得:其中 ( q ) 是商,( r ) 是余数,且 ( -n < r \leq n )。

Python老吕的博客 2422

秃鹰搜索优化算法(BES)详解:从自然捕食到全局优化

秃鹰搜索优化算法(Bald Eagle Search Optimization Algorithm,BES)是由马来西亚学者Alsattar等人于2020年提出的一种新型元启发式优化算法。该算法灵感来源于秃鹰在自然界中高超的捕食行为,特别是其独特的狩猎策略和卓越的视觉搜索能力,模拟了秃鹰捕食鲑鱼等猎物的完整过程。

qq_42212808的博客 1352

上位机知识篇---取模取余

本文深入探讨了取模与取余运算的本质区别及应用场景。通过时钟的比喻,解释了这两种运算在周期系统中的数学原理。关键区别在于负数运算时:取余结果符号与被除数一致(如-7%5=-2),取模结果符号与除数一致(如-7%5=3)。文章详细介绍了它们在编程中的应用方案,包括循环处理、范围限制、奇偶判断等,并提供了跨语言实现取模运算的实用方法。最后给出了记忆口诀和思维模型,帮助读者掌握这个时空转换器的核心概念。

在你不想做的时候,正是应该做的时候。 1049

无人船 | 基于ROS的轻量级多无人艇自主导航仿真框架

无人水面艇USV是海上自主无人系统的关键组成部分,在民用、军用领域应用广泛,例如海上救援、水质测量、扫雷反潜等,因此对USV导航算法的研究具有重要意义。为了便于进行USV相关算法的验证与部署,本文介绍的这套基于ROS的多无人艇的自主导航仿真平台,轻量化地实现了建图、规划、控制等多种功能,同时自研框架保证了功能的高度可拓展和可定制

FRIGIDWINTER的博客 8002

PCIe Link Training 深度解析:从物理检测到高速数据传输

本文深入解析PCIe链路训练(Link Training)的技术细节,揭示了这一复杂协商过程的五个关键阶段:物理检测阶段通过电气特性识别设备连接;轮询阶段建立时钟和符号同步;配置阶段确定链路宽度并处理拓扑异常;恢复阶段完成速率切换和信号均衡;最终进入正常工作状态。文章特别强调了高速率下的均衡技术挑战,以及验证工程师需要关注的多个维度,包括状态机跳转、有序集内容、均衡算法和错误恢复能力。随着PCIe速率不断提升,理解这一底层机制对高速接口设计具有重要价值。

元直的博客 1655

[C++]求模与求余运算

  C++中程序中,求模和求余运算很多时候都会让人弄不清,甚至在有些教材上也会混淆概念,比如在《C++ primer 第五版(中文版)》中,关于其他类型向无符号类型转换时,如果原值大小超出转换后类型的范围时,原书写的是取模后的余数,其实是直接进行取模;再如,C++二级教程中把%称作求余(求模),实际上我们应用%是在求余。   接下来我们一起来学习下求模与求余运算:    ①求模与求余运算我们都首先...

ycwwl1993的博客 4017

杰理JL701N内置flash录音配置教程

本文详细介绍了内置Flash录音功能的配置方法。主要内容包括:1) 基础模式配置(开启音乐/录音模式、Flash录音宏定义);2) 录音参数设置(格式基准值、存储区域定义、容量配置);3) MP3编码特殊处理;4) 下载时的Flash格式化操作;5) 录音开关和播放接口的使用说明。配置过程涉及多个关键文件的修改,并强调存储容量的精确分配。

qq_42014563的博客 597

分糖果问题:模运算优化与循环分配算法

模运算在计算机科学中是一种基础而重要的数学工具,它利用除法的余数特性实现循环定位功能。通过取模运算,可以将线性分配问题转化为O(1)时间复杂度的数学计算,显著提升算法效率。这种技术在资源轮询分配、循环队列实现等工程场景中有广泛应用。以经典的洛谷B2020分糖果问题为例,当需要将m颗糖循环分配给n个小朋友时,直接使用m%n运算即可确定最后一个获得糖果的编号,避免了O(m)次的模拟操作。该解法特别适合处理大规模数据场景,同时演示了如何将数学原理转化为高效算法。类似思路还可应用于约瑟夫问题等循环淘汰场景,是算法优

weixin_33923762的博客 318

【NLP】第十章:位置编码Positional Encoding

前面讲RNN时一般都会有一个ht的输出,这个输出就是样本与样本之间的信息,而且RNN是时序循环的,所以RNN本身的结构,在物理上,就自带词的前后顺序信息的。比如词never,不管never本身的词向量是什么,只要你在序列中排第一个位置,你的位置向量就是[0,1,01],你排第三个位置,你的位置向量就是[0.9,-0,4,0.2,1.0]。也所以,你可以理解为:embedding后的词嵌入,PE按照每个样本在sequence中的位置,把embedding后的词嵌入给扭转后,才送入attention的。

因为热爱所以坚持 1917

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MATLAB模运算深度解析:从数学定义到工程实践

模运算是一种基础的数学运算,它通过除法与取整操作的组合,实现了数值在固定范围内的循环映射。其核心原理基于向下取整函数,确保结果始终位于一个非负区间内,这与常规的取余运算在处理负数时存在本质区别。这种特性赋予了模运算极高的技术价值,使其成为处理周期性数据的理想工具。在工程实践中,模运算广泛应用于信号相位对齐、循环缓冲区索引、数据归一化等场景。例如,在信号处理中,它可以将任意相位值映射到标准区间;在循环队列中,它能实现索引的自动环绕。本文以MATLAB中的mod()函数为例,深入探讨了模运算的底层机制,并分析了

weixin_33911824的博客 609

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

上一篇: 【解决方法】eclipse debug Unable to install breakpoint in xxx
林帅帅
博客等级 码龄12年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值