首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Utility之负数

最近在跟孩子学习表内除法,想到一个问题:C语言里怎样处理负数? 表内除法:12÷4=3 整数除法:13÷4=3…1 整数整除:13/4是等于3吗? 负数:-13%4等于多少?...明明除不尽,又要求结果是整数,一般有这样几种方法: 向上整(Ceiling),即向+∞靠齐,也就是比浮点数结果稍大的最小整数。...向下整(Floor),即向-∞靠齐,也就是比浮点数结果稍小的最大整数。那么:13/4=3;-13/4=-4;15/4=3;-15/4=-4。...而C语言里的整除,采用的就是向零整(Truncate)。 再来看。不管哪种整除操作,都会符合公式:被除数÷除数=商…余数,所以:余数=被除数-除数*商。...那么C语言就是: 13÷4=3…1;-13÷4=-3…-1;13÷-4=-3…1;-13÷-4=3…-1 15÷4=3…3;-15÷4=-3…-3;15÷-4=-3…3;-15÷-4=3…-3

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

C语言符号-运算

目录 前言 整 向0整 向-∞整 向+∞整 四舍五入整 汇总 \余 对于正数 对于负数 余和的理解 ---- 前言 ---- 本文主要讲解并真正理解余\运算是怎样的!...,在C语言中本质是向0整 当然对于向0整我们也可以使用trunc库函数 (需包含math.h头文件) 示例: #include #include /...0; } 对于负数 示例: int main() { int a = -10; int d = 3; printf("%d\n", a/d); //C语言中是-3,...r的大小,本质是取决于商q的,而商取决于取证规则 由此对于负数”结果的不同,我们分别称之为正余数和负余数 余和的理解 ---- 余:尽可能让商,进行向0:尽可能让商...,对其进行0向整和-∞整,整方向是相反的,故不等价于余 结论: 两个同符号数据参与余,等价于余,不同语言余数相等 两个不符号数据参与余,不等价于余,余数大小需考虑语言整规则

3K40

Verilog 中负数的 % 余数运算、C语言、Matlab各自的余数运算【%】【mod】【rem】

Verilog 中的 % 余数运算(),看到这个题目的时候还真不确定选哪个答案。 13. Verilog 中 -10%3 的结果是多少?...里的运算,先把各自符号位去掉运算,然后第一个运算数的符号位,即都直接算 10 % 3 = 1,然后如果前面是 10 模式就是 1,前面是 -10 值就是 -1; 余数符号跟随被除数的符号位。...C语言的 %,求余数: 和 Verilog 一样,余数符号跟随被除数的符号位。 先去掉符号余数,被除数是正数,则余数为正数;被除数为负数,则余数为负数。 ?...该结果与 Verilog 和 C 语言的 % 结果一致: 余数符号跟随被除数的符号位。 这里特别注意 Matlab 中的 mod 运算,以前经常把 % 叫做,计算方式不一样。...当商为正数,就是数值越小越好,当商为负数,就往绝对值后比较大的方向,即都向着负无穷方向

10.3K30

Java余和

抛开高级语言的实现,余运算和运算本身并不完全一致,区别在于对负整数进行商时操作不同。虽然这样说,但是余运算和运算的公式都一样。...通过以下两个操作获取余数或模数: step1、求商:int z = x / y step2、求余数或模数:int result = x – y * z 它们的差别在于,如果z的值是负数且不为整数...– 3 * (-2) == 2 所以大家不要再把余和混为一谈啦!...在Java中,%是余数,的操作是:Math.floorMod,我们可以看一下Java的操作是怎么实现的(以下为java源码,只是我加上了注释): /** *计算 x - z */ public...r--; } return r; } 注:不同的语言,对于%运算符的含义可能是不一样的,比如cc++、java 为余,而python为 发布者

2.1K10

C语言简单说】六:运算符以及变量的扩展

┴┴ (╰(`□′)╯( ┴┴ … 这一节我们就来说另外的运算符——运算符(说白了跟余数差不多…<—_-)!!!) 先看看好难懂的定义:运算和余运算两个概念有重叠的部分但又不完全一致。...…(后面太罗嗦就不复制了) 也是一种运算,叫做运算…(貌似有点废话<—_-)!!!)...c=b%a; printf("ba 的值是%d;\n",c); system("pause"); } 我们看c=b%a 就是运算,把运算结果给...c变量,从而再输出出来。...运算其实就是,我们姑且就当作余数。我们看代码我们的b是5,a是1,那么的运算结果等于1,那是因为5除2余1…好了就是那么简单。反正我数学不好=。

97910

Python负数余总结

Python负数余总结 余数存在正余数和负余数,要了解负余数,需要先了解整原理 17 // 5 = 3 -17//5 = -4 17//-5 = -4 -17//-5 = 3 根据上述的4...个公式,可以看出python的编译器是的整符号位由被除数和除数同时决定,整数的数值是由向下整的,即如果整数的符号位正,则取靠近0的数,如果整数是负数,则取远离0的数或者也可以这样理解:被除数和除数处于...0的一边就往靠0的方向整,如果是处于0的两边就往远离0的方向整。...了解了整原理后,再理解余就比较简单了 17%5 = 2 这个没什么好解释,大家都了解的 -17%5= 3 该等式的被除数和除数处于0的两边,那必然是往远离0的方向余数,2+3 = 5按照公式5

1.4K10

C除法和余】除法和负数余你真的会了吗?

文章目录 除法(整方式) 负数余 除法(整方式) 1....,就可以利用这个规则,减小自己的岁数 2.比如你是一名职场管理人士,你在写这个的年龄的时候,就可以利用这个规则,增大自己的岁数 负数余 下面正数余没什么特殊的地方,因此我们主要讲讲负数余这块就没有像整一样有那么多函数...:(同样是-10%3) 不同的语言,同一个表达式的对余的结果大相径庭: C语言:-10=-33-1,其中-3是商,-1是余数,是负余数 python:-10=-43+2,其中-4是商,2是余数,...是正余数 本质原因的和商有关,也就是和除法的整方式有关 所以对于求余数的概念有所修订:0<=|余数|<|被除数| **备注:python学习者对于小细节勿喷,只是不想让C语言者纠结 ** 合理解释...另一个角度理解C和python中的‘余’: C语言:余数尽可能向0靠近 python:余数尽可能向负无穷靠近 运算技巧: 先用整方式算出商,再算余数 余的题解实际用例: 请你将一个十进制数转换为一个二进制数

96860

C语言负数做运算你会了吗

\n", a%c); printf("结果4: %d\n", a/d); printf("结果5: %d\n", b/c); printf("结果6: %d\n", a/c);...发现在输入负数时结果会出问题,这么一来大概就知道问题出在什么地方了。 先来看一下上面示例代码的输出的结果,有没有和你想的一样?...C语言中的负数整规则 我们先来考虑一下,为什么上面示例代码的在余和整时符号不同呢,这就涉及到C语言负数参与除法时符号的问题。...C 语言负数做除法的时候,商是令其与分母相乘的积的绝对值不超过分子的绝对值且最接近的那个数。...余时,余数与被除数(即分子的符号)相同 整时,先将各个带符号的数全部正值再做除法,再根据负号的个数确定商的符号 总结 这个问题在C语言中看似简单,但是往往不注意也可能会引起大问题。

1.7K40

% 不是运算符?

为什么我问这个问题,因为我今天才发现不同语言中 % 的含义是不同的,因为我是主学 java 的,一直以为 % 就是,但是我错了。...第一步:先求c = a / n,结果是 -2(向负无穷方向舍入) 和 -1(向0方向舍入); 第二步:计算和余数的公式相同,但因 c 的值不同,求时r = 3,求余时r = -7。...总结:当a和n符号一致时,求运算和求余运算所得的c的值一致,因此结果一致。当符号不一致时,结果不一样。求运算结果的符号和n一致,求余运算结果的符号和a一致。...各个环境下 % 运算符的含义不同,比如 C/OC/C++,Java 中为余,而 Python 则为。 所以我们的疑惑就解开了,因为在 Python 中 % 是,而在 Java 中为求余。...因为不是 Python 规定的向负无穷整,而是运算就是往负无穷整,在 Python 中 % 是运算,而在那几个语言中是余运算。 个人理解,如有疏漏请指出。

1.7K20
领券