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

Python中的运算

所谓取运算,就是计算两个数相除之后的余数,符号是%。如a % b就是计算a除以b的余数。...实际上,虽然结果不一样,不过取运算完全遵从统一的规则: a \% b = a- \lfloor\frac{a}{b}\rfloor * b 其中\lfloor\frac{a}{b}\rfloor表示...,这个应该来说是比较简单的,而且无论符号是什么,我们都只计算这个值; 对于有负号的,不管负号在哪个数字,都去除负号,然后计算步骤1的结果; 接下来根据负号的位置分为3种情况,假设除数是K,去掉负号后取的结果是...M: 2个数都是负数,直接等于-M 被除数是负数,除数是正数,由于是向下舍入,最后相当于会多加上一个K,也就是说一定是大于0的,结果是K-M 被除数是正数,除数是负数,刚好相反,结果是M-K,注意这里的...K是除数的绝对值,是正数 简单归纳: 不管有没有负数,先按正数求得到M 2个数都为负数,结果是-M 只有1个数为负数,负数在上,记住结果一定是正的,大数-小数(除数-余数),那么就是K-M 只有1个数为负数

1.4K30

python 负数取运算实例

也可以换个思路想, -340%60 =(比340大的那个可以被60整除的正整数) – 340 = 360 – 340 = 20 举例: 1%3 = 1 -1%3 = 2 补充知识:python中对负数求余的计算方法和求幂运算注意点...python中对负数求余的计算方法 1....整除运算(除法计算出结果后,向下取整) 使用整除运算用 // 1 // 2 0 3 // 2 1 10 // 3 3 10 // -3 -4 10 / 3 = 3.3333 故:10 // 3中对3.333...在上面已经计算过 10 % -3 = 10 – (-4)(-3) = 10 – 12 = -2 -10 % 3 = 2 10 % 3 = -10 – (-4)*3 = -10 + 12 = 2 求幂运算中需要注意的一点...3.求幂运算用 ** -3 ** 2 -9 (-3) ** 2 9 乘方运算符的优先级比求负(-)高,先乘方后求负 以上这篇python 负数取运算实例就是小编分享给大家的全部内容了,希望能给大家一个参考

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

使用位运算替代运算

昨天的分析HashMap原理的文章里面提到,使用位运算替代取运算效率高,但位运算只能在特定场景下才能替代%运算。...正常情况下: 但如果b的值为2的n次方的时候(n为自然数),这时候就可以用位运算来替代运算, 转化如下: 2的n次方的二进制如下: 从上面能看到左移一位是放大2倍,右移一位是缩小2倍 分别减一后的二进制...举例 我们算下11%8的, 11的二进制是:1011 代入上面的公式: 7的二进制: 0111 二者做&(与)运算 ,回忆下运算规则: 结果: 1011 & 0111 = 0011 转化成10进制后...=3 所以11%8=3 这种方法只是适合于求一个数除以二的N次冥才正确,求的过程,就是2^n-1的中1的个数就是n的值,再与a做&运算,得出来的低位就是我们期望的余数。

1.8K50

你真的了解运算吗?

cout << getMapCode(i, -3) << "\n"; } 问题其实就出在运算(%)上: 左移操作由于使用了负数的偏移,导致了负数取运算,而对于负数取,Lua和C/C++的结果是不一致的...我们先从运算的定义说起~ r = a - I(a / b) * b 其中a为除数,b为被除数,r即为运算的结果,即余数,而I(…)代表的是取整函数,取整函数不同,取结果自然也就不同 对于Lua,I...,自然程序的结果也就不会正常了~ 知道了程序出错的原因,“修复”起来也就有了对策,方法很简单,自己实现一个使用Floor的取运算即可~ const char codeTable[] = { 'a',...cout << getMapCode(i, -3) << "\n"; } 值得一提的是如果你使用Lua中math.fmod来计算 -1 % 5 的话,结果和C/C++中是一致的,为 -1 总结 运算看似简单...,但其实大家不一定真正了解,这里有一段Python中关于运算怎么实现(同Lua一样,也使用了Floor取整)的讨论,有兴趣的朋友可以看下~ OK,下次再见吧~

40630

% 不是取运算符?

这还要从一道题目说起:如图,为什么在 Python 中 -17 % 10 = 3 ? 大家可以直接看下面的解释,他说的不完全对,最后会解释原因。 ?...我们先留着不说,先来看一下取和取余的区别: 取余,遵循尽可能让商 向0靠近 的原则,fix(); 取,遵循尽可能让商 向负无穷靠近 的原则,floor()。...总结:当a和n符号一致时,求运算和求余运算所得的c的值一致,因此结果一致。当符号不一致时,结果不一样。求运算结果的符号和n一致,求余运算结果的符号和a一致。...各个环境下 % 运算符的含义不同,比如 C/OC/C++,Java 中为取余,而 Python 则为取。 所以我们的疑惑就解开了,因为在 Python 中 % 是取,而在 Java 中为求余。...因为不是 Python 规定的向负无穷取整,而是取运算就是往负无穷取整,在 Python 中 % 是取运算,而在那几个语言中是取余运算。 个人理解,如有疏漏请指出。

1.7K20

Super Pow:如何高效进行运算

int superPow(int a, vector& b); 要求你的算法返回幂运算a^b的计算结果与 1337 取(mod,也就是余数)后的结果。...你怎么把这个数组作为指数,进行运算呢? 二是如何得到求之后的结果?按道理,起码应该先把幂运算结果算出来,然后做% 1337这个运算。...那么,说一个关于运算的技巧吧,毕竟运算在算法中比较常见: (a*b)%k = (a%k)(b%k)%k 证明很简单,假设: a=Ak+B;b=Ck+D 其中 A,B,C,D 是任意常数,那么: ab...所以说只要简单扩展刚才的思路,即可给幂运算: int base = 1337; // 计算 a 的 k 次方然后与 base 求的结果 int mypow(int a, int k) {...至此,Super Pow 就算完全解决了,包括了递归思想以及处理运算、幂运算的技巧,可以说这个题目还是挺有意思的,你有什么有趣的题目,可以留言分享一下。

1.5K10

Super Pow:如何高效进行运算

int superPow(int a, vector& b); 要求你的算法返回幂运算a^b的计算结果与 1337 取(mod,也就是余数)后的结果。...你怎么把这个数组作为指数,进行运算呢? 二是如何得到求之后的结果?按道理,起码应该先把幂运算结果算出来,然后做% 1337这个运算。...那么,说一个关于运算的技巧吧,毕竟运算在算法中比较常见: (a*b)%k = (a%k)(b%k)%k 证明很简单,假设: a=Ak+B;b=Ck+D 其中 A,B,C,D 是任意常数,那么: ab...所以说只要简单扩展刚才的思路,即可给幂运算: int base = 1337; // 计算 a 的 k 次方然后与 base 求的结果 int mypow(int a, int k) {...至此,Super Pow 就算完全解决了,包括了递归思想以及处理运算、幂运算的技巧,可以说这个题目还是挺有意思的,你有什么有趣的题目,可以留言分享一下。

80650

程序员数学基础【三、取运算(取余运算功能重叠部分)】(Python版本)

什么是取运算: 需要明确一点是,程序语言中取除法的整数商默认优先取临近值,即往负无穷方向取最邻近整数。...取运算(“Modulus Operation”)和取余运算(“Remainder Operation ”)两个概念有重叠的部分但又不完全一致。主要的区别在于对负整数进行除法运算时操作不同。...运算具体实现过程为: 对于整型数a,b来说,取运算或者求余运算的方法都是: 1.求 整数商: c = a//b (//在python中表示取地板商,/表示取float商) 2.计算或者余数: r...= a - c*b Python运算(%)对于正数而言是取余数,对于负数则不能笼统地说是取余数。...注意,这里的‘取余数’就是现实数学中我们所指的取余数,-7%4=-1余-3 在python语言环境中 % 运算符代表取,-7 % 4=1 例子: print("{0}%{1}={2}".format(

73620

快速幂的大数运算_快速幂

快速幂运算 1.什么是快速幂 2.快速幂的“小数”运算 3.高精度(大数)的快速幂 1.什么是快速幂 快速幂,是指在进行幂运算的时候,用一种快速方法得出答案。...2.快速幂的“小数”运算 对于系统内置类型的整型,暂且叫他“小数”,这个时候进行快速幂运算,代码如下: #include #include #include using namespace std; const long long int mod = 1000000000007; //对答案取 int main() { long long int...long long int ans = 1; long long int temp = 2; cin >> n; //求2的n次方 printf("2的%lld次幂对对1000000000007取的最终值是...用一张图来表示 3.高精度(大数)的快速幂 上面的代码发现当n的值稍微大一点就不行了,但是用高精度运算就不要有这种限制。

78620
领券