今天重点说下 符号篇的取模求商包括取余的一些问题。

希望大家今天也要心情愉快的学习哦。

1 关于取整的问题

首先要明白取模和取余,要先明白取整的问题。

2 .取整方向 和对对应的函数

常见的取整方向是有四种

第一种向0取整(C语言默认),函数为trunc

第二种负无穷大取整,函数为floor


第三种正无穷大取整,函数是ceil


第四种四舍五入取整,这个就很熟悉了,函数是round。

总的来说:关于浮点数的取整有很多不一样的方法,不同方法可能会有同一个结果,也可能不同结果

3. 关于取模和取余现象区别

关于概念,都在学习过程中学过了,在复习一遍吧,对于a b两个自然数,d非0,可以证明两个唯一的整数 q 和 r ,满足 a = q*d + r 并且 0<= r < d,其中q被称为商,r 被称为余数。(这样看的话,余数一定是正数
看个例子

    int a = -10;int b = 3;printf("%d\n", a / b);printf("%d\n", a%b);


为什么取模之后变为 -1 呢?
是定义错了?还是C语言错了?
这又是概念上的冲突了。
看下例2 :(因为没有其他环境,就用函数模拟实现Python环境下的结果)

    int a = -10;int b = 3;printf("%.1f\n",floor(a*1.0/b));//用不同的取整方式printf("%.1f\n", a*1.0 - floor(a*1.0 / b)*3);//公式计算余数


这样来看的话,是不是和公式上的又好像一样呢?

4.取模和取余本质区别

因为语言不同导致对负数的 “取模” 的值不同,我们可以分别叫正余数,负余数。

所以对于C语言中概念更新 :
对于a b两个自然数,d非0,可以证明两个唯一的整数 q 和 r ,满足 a = q*d + r 并且 0<= |r| < |d|其中q被称为商,r 被称为余数。

从本质来看:是商的取整方向不同,导致结果不同。
取模:是尽可能让商向负无穷大取整。
取余:是尽可能让商向0进行取整。

C语言的 % 的本质是取余。
而模拟实现的Python的本质是取模。

5.同符号数取模

对于一个正数,它的取整方向,0向取整和负无穷大取整方向一样,所以取模取余是等价。
对于一个负数,它的取整方向,0向取整和负无穷大取整方向不一样,所以取模不等价取余。

得出一个结论 :除数和被除数同符号的来说,取模等价于取余。

6.不同符号取模

同符号的说过了,那么不同符号呢?下面通过数学的转化进行验证,在举例子。

对定义进行变化:
a = qd +r,变为 r = a - qd,形式上为 x = y +z;
那么最终的x的符号是由 |y| 和 |z|的谁的大决定的,那么r的符号就是哪个值的符号。
x是被除数,q*d实际上就是( 商 * 除数),除数是常量,那么最终的值其实是由商的取整方式决定的。
c是0向取整,所以商的绝对值是变小的,所以就是 q *d 是整体变小的。
结论就是 :
在C语言中不同符号取余(或者其他采用0向取整的语言来说),余数符号与被除数相同。

    int a = 10;int b = -3;printf("%d\n", a%b);int c = -10;int d = 3;printf("%d\n", c%d);

根据结论,余数的符号和被除数相同,那么a%b为1,c%d为-1
打印结果,也就是1和-1.

7.总结

  1. 浮点数取整有很多方式。
  2. 对于a b两个自然数,d非0,可以证明两个唯一的整数 q 和 r ,满足 a = q*d + r 并且 0<= |r| < |d|其中q被称为商,r 被称为余数。
  3. 不同语言中,余数的不同,可以分别叫为正余数和负余数。
  4. 具体余数的大小,是由于商的大小确定的,本质是商的取整方式不同导致的余数不同。
  5. 取余和取模的本质不同,取模:是尽可能让商向负无穷大取整。
    取余:是尽可能让商向0进行取整。
  6. .除数和被除数同符号的来说,取模等价于取余。
  7. 在C语言中不同符号取余(或者其他采用0向取整的语言来说),余数符号与被除数相同。

下期预告

下期讲位运算符,下期更精彩哦~~~
各位看官,给个三连吧 !!!

宝藏级别的负数取模,让你关于负数取模不在陌生 >o< 进来看看吧相关推荐

  1. C语言中四种取整方式、取余/取模的运算以及负数取模的问题

    零向取整.负无穷向取整.正无穷向取整.四舍五入取整 如果将一个浮点数赋值给整形,只会保存整数位: 这种取整方式为零向取整,C语言默认采用的是这种方式 C语言中也有对应的零向取整函数: 同理还有一种函数 ...

  2. python取模运算_Python中的取模运算方法

    所谓取模运算,就是计算两个数相除之后的余数,符号是%.如a % b就是计算a除以b的余数.用数学语言来描述,就是如果存在整数n和m,其中0 <= m < b,使得a = n * b + m ...

  3. 取模(mod)与取余(rem)的区别——Matlab学习笔记

    取模(mod)与取余(rem)的区别--Matlab学习笔记http://www.bieryun.com/1099.html 昨天在学习Matlab的数学函数时,教程中提到取模(mod)与取余(rem ...

  4. 环,模,补码,负数的表示与减法实现

    假设M是n-bit数的模,比如16是4bit二进制数的模,8是3bit二进制数的模,即从000->111,111+1=1000,超过3bit的那个1被舍弃回到000,0到7首位相连就形成一个环, ...

  5. 【排序】什么都能排的C语言qsort排序详解【超详细的宝藏级别教程】深度理解qsort排序

    [排序]什么都能排的C语言qsort排序详解[超详细的宝藏级别教程]深度理解qsort排序 作者: @小小Programmer 这是我的主页:@小小Programmer 在食用这篇博客之前,博主在这里 ...

  6. python模运算求余_取模运算和取余运算

    取模运算和取余运算 取模运算( " Modulo Operation " )和取余运算 ( " Complementation " )两个概念有重叠的部分但又不 ...

  7. VS2017制作POV-LED取模软件 可对图片取模

    最近做旋转LED发现,网上的现有的取模软件大多数是矩形取模,字旋转起来会发生严重的变形.由于是旋转,就想到了极坐标,将直角坐标转为极坐标再按每一列导出数据. 对图片取模后的效果 可以查看不同坐标系下的 ...

  8. 三款国产宝藏级别软件,个个功能强大且好用,能让你的电脑黑科技感拉满

    随着PC和手机行业的发展,各种类型的软件也如雨后春笋般不断涌现. 而在这个科技日新月异的时代,数不清的软件,足以让我们眼花缭乱.如何在这琳琅满目的软件中,一眼相中宝藏级别的"神器" ...

  9. 华为云IoT智慧物流案例04 | 4G网卡拨号(广和通L610-CAT.1模组)与北斗定位模组(中科微电子)数据解析

    华为云IoT智慧物流案例04 | 4G网卡拨号(广和通L610-CAT.1模组)与北斗定位模组(中科微电子)数据解析 回顾 第一章 广和通L610-CAT.1模组调测和拨号脚本编写并验证网络 第二章 ...

  10. 什么叫取反_彻底搞明白“取反加1”到底是个什么鬼?

    写作时间:2020-08-15 目录: 1.问题: 2.将二进制表达的负数换成十进制怎么弄? 3.总结一下 正文: 1.问题: 比如说.要表达0~255的十进制数,在FPGA使用一个8bit[7:0] ...

最新文章

  1. python爬虫获取的网页数据为什么要加[0-[Python爬虫] 等待网页加载后再获取内容...
  2. Linux学习之用户管理和组管理
  3. 【洛谷 P4168】[Violet]蒲公英(分块)
  4. 2015年职称计算机考试大纲,2015年职称计算机考试photoshop练习题6
  5. eclipse新建项目有红叉_selenum+java+eclipse环境搭建和浏览器驱动配置
  6. Hive 大小表关联查询异常
  7. IEDA 配置Git_04
  8. JSON(5)---JSON.stringify()
  9. C++_引用做函数的返回值_引用的本质---C++语言工作笔记032
  10. BUPT复试专题—统计字母(2008)
  11. 智能传感器产业三年行动指南
  12. 【动态规划】LeetCode 62. Unique Paths
  13. 数据推动变革 PMC创新存储方案应对挑战
  14. matlab如何创建callback函数_MATLAB作图实例:46:显示复杂的三维对象
  15. 1156 Sexy Primes – PAT甲级真题
  16. CAN总线学习总结2——CAN错误及CAN busoff处理机制
  17. 基于JAVA校园快递代领系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
  18. 某音热门---图片转字符SpringBoot版
  19. 2020年,微信的基地属性正在悄然转向
  20. idea配置查看代码汇编指令插件

热门文章

  1. 开发与测试如同左手和右手
  2. Linux入坑手册(鸟哥的私房菜)
  3. html 下划线 鼠标手,(腾讯设计规范.ppt
  4. 聊一聊如何把SSL证书安装到小鸟云服务器上
  5. FPGA--OV7725摄像头采集与VGA显示实验--1--OV7725使用与驱动协议
  6. 关于课题的一点思考(基于多生理信号的情绪识别)
  7. [系统安全] 五.OllyDbg和Cheat Engine工具逆向分析植物大战僵尸游戏
  8. SQL :Date 函数
  9. 尚硅谷周阳学习微服务《二》
  10. “不靠谱“的布隆过滤器是怎么成为大数据世界中的韦小宝的?