• python 负数模运算First and foremost, sorry for the long absence recently. Work and study have been taking most of me in the last months. In fact, what I’m writing down Today is something I learnt ...
python 负数模运算First and foremost, sorry for the long absence recently. Work and study have been taking most of me in the last months. In fact, what I’m writing down Today is something I learnt recently and thought it was worth sharing given that it quite surprised me and it’s a super useful fact to learn; how does Python handle modulo operation with negative numbers. So, let’s keep it short and sweet and get straight to it. 首先，对于长期以来的缺席深表歉意。 在过去的几个月中，工作和学习一直困扰着我。 实际上，今天我写下的是我最近学到的东西，并认为值得分享，因为这让我很惊讶，这是一个非常有用的知识。 Python如何处理带负数的模运算 。 因此，让我们使其简短而有趣，直接使用它。
The base logic behind the modulo operator indicates the following: 模运算符后面的基本逻辑指示以下内容：
For any two numbers, the modulo operator (%) returns the remainder of dividing the left-hand operand by right-hand operand. It’s used to get the remainder of a division problem. Beau Carnes at www.freecodecamp.org 对于任何两个数字，取模运算符(％)返回左操作数除以右操作数的余数。 它用于获得除法问题的其余部分。 博·卡恩斯(Beau Carnes)， 网址：www.freecodecamp.org The basic syntax is: 基本语法为：
a % b = r a％b = r In the previous example a is divided by b, and the r, i.e. the remainder is returned. Let’s see an example with numbers now: 在前面的示例中，a除以b，然后返回r，即余数。 现在来看一个带有数字的示例：
7 % 2 = 1 7％2 = 1 The result of the previous example is one. Two goes into seven three times and there is one leftover. In a similar way if we were to choose two numbers where b > a we would get the following: 上一个示例的结果为1。 有2次进入7次3次，剩下1次。 以类似的方式，如果我们选择b> a的两个数字，则会得到以下结果：
3 % 4 = 3 3％4 = 3 This will result in three since four does not go into three any times so the original three remains. 这将导致三个，因为四个不会在任何时候进入三个，因此原来的三个仍然存在。
The sibling of the modulo operator is known as the integer division operation (//), where the fractional part, i.e. the remainder is discarded. Take the following example: 模运算符的同级称为整数除法运算(//)，其中小数部分(即余数)被丢弃。 请看以下示例：
5 // 2 = 2 5 // 2 = 2 For positive numbers, there’s no surprise. However if one of the operands is negative, the result will be floored as well, i.e. rounded away from zero towards negative infinity, returning the largest integer less than or equal to x. For example: 对于正数，不足为奇。 但是，如果其中一个操作数为负，则结果也将被累加，即从零向负无穷大舍入，返回小于或等于x的最大整数。 例如：
-5 // 2 = -3 -5 // 2 = -3 Now, there are several ways of performing this operation. Unlike C or C++, Python’s modulo operator always returns a number having the same sign as the denominator (divisor) and therefore the equation running on the back will be the following: 现在，有几种执行此操作的方法。 与C或C ++不同，Python的模运算符始终返回与分母(除数)具有相同符号的数字，因此在背面运行的方程式如下：
mod = a — math.floor(a/b) * base mod = a — math.floor(a / b)*基数 For example, working with one of our previous examples we’d get: 例如，使用我们之前的示例之一，我们将获得：
mod = 7 — math.floor(7/2) * 2 mod = 7 — math.floor(7/2)* 2 mod = 7–3*2 = 1 mod = 7–3 * 2 = 1 And the overall logic works according to the following premises: 总体逻辑根据以下前提进行工作：
a/b = q with remainder r a / b = q，其余为r Such that: b*q + r = a and 0 <= r < b 这样：b * q + r = a且0 <= r <b Now, if we want this relationship to extend for negative numbers, there are a couple of ways of handling this corner case, but according to Wikipedia in mathematical number theory mathematicians prefer to stick to flooring towards negative infinity as in the following example: 现在，如果我们希望将此关系扩展为负数，则有几种方法可以处理这种极端情况，但是根据Wikipedia的数学数论，数学家宁愿坚持朝负无穷大展开，如以下示例所示：
-500/27 = -18.51 -500/27 = -18.51 math.floor(-500/27) = -19 math.floor(-500/27)= -19 Python follows the same logic. Why? According to Guido van Rossum, the creator of Python, this criterion has some interesting applications. For example, consider taking a POSIX timestamp (seconds since the start of 1970) and turning it into the time of day. Since there are 24*3600 = 86400 seconds in a day, this calculation is simply t % 86400. But if we were to express times before 1970 using negative numbers, other criterions used would give a meaningless result, while using the floor rule works out fine. Python遵循相同的逻辑。 为什么？ 根据 Python的创建者Guido van Rossum的说法 ，该标准具有一些有趣的应用程序。 例如，考虑采用POSIX时间戳(自1970年初以来的秒数)，并将其转换为一天中的时间。 由于一天中有24 * 3600 = 86400秒，因此此计算仅为t％86400。但是，如果我们要使用负数表示1970年之前的时间，则使用底限法则可以得出其他准则将无意义。精细。
Finally, take into account the following when working with negative numbers: 最后，在使用负数时请考虑以下因素：
If a < 0 then 0 <= r < b remains the same 如果a <0，则0 <= r <b保持不变 But if b < 0 then 0 >= r > b 但是如果b <0则0> = r> b Finally, let’s see a quick example for a = -500 and b = 12: 最后，让我们看一下a = -500和b = 12的简单示例：
-500/12 = -41.67 -500/12 = -41.67 -500 % 12 = 4 -500％12 = 4 -500 // 12 = -42 -500 // 12 = -42 Then we can check for b*q + r = a: 然后我们可以检查b * q + r = a：
12 * -42 + 4 = -500 12 * -42 + 4 = -500 For closing up this story, let’s see an interesting application of using the modulo operator with negative numbers: converting an hour written in the 24-hour clock into the 12-hour clock. The challenge seems easy, right? For example, 23%2 will give us 11 and 15%12 will give us 3…exactly what we want! Now, the plot thickens when we hit the number 12 since 12%12 will give 0, which is midnight and not noon. 为了结束这个故事，让我们看一下使用带负数的模运算符的有趣应用：将24小时制中写入的小时转换为12小时制。 挑战似乎很容易，对吧？ 例如，23％2将给我们11，15％12将给我们3…正是我们想要的！ 现在，当我们将数字设为12时，情节就会变厚，因为12％12会给出0，即午夜而非正午。
The solution here is using the modulo operator with negative numbers. For example, -22%12 will give us 2 and -19/12 will give us 5. As a rule of thumb, this kind of operation will always give us how many units we have left until the next multiple of our denominator. I.e. in our first example we’re missing 2 hours until 12x2 and in a similar way -34%12 would give us 2 as well since we would have left 2 hours until 12x3. 解决方案是使用带负数的模运算符。 例如，-22％12将给我们2，而-19/12将给我们5。根据经验，这种操作将始终给我们剩下多少单位，直到分母的下一个倍数为止。 也就是说，在我们的第一个示例中，我们错过了12x2之前的2小时，并且以类似的方式，-34％12也将为我们提供2，因为我们将剩下2个小时直到12x3。
So, coming back to our original challenge, for converting an hour written in the 24-hour clock into the 12-hour clock, we could write the following: 因此，回到我们最初的挑战，要将24小时制中写入的小时转换为12小时制，我们可以编写以下内容：
def convert24to12(hour): return 12 — ((- hour) % 12)That’s all for today! If you enjoyed this story, don’t forget to visit my profile where you’ll find content such as: 今天就这些！ 如果您喜欢这个故事，请不要忘记访问我的个人资料，在其中找到诸如以下内容：
See you around! And thanks for reading! 再见！ 并感谢您的阅读！
翻译自: https://medium.com/@gonzaloferreirovolpi/modulo-operation-with-negative-numbers-in-python-18e3cedffe82python 负数模运算
展开全文
• ————Python模运算个人总结归纳———— a和b同为正整数的时候 如果 a < b 则结果为 a 3 % 5 = 3 10 % 20 = 10 123 % 756 = 123 .....诸如此类 如果 a > b 结果为 a — （b在...
————Python模运算个人总结归纳————
a和b同为正整数的时候
如果 a <  b  则结果为 a
						 3 % 5 = 3
10 % 20 = 10
123 % 756 = 123
.....诸如此类

如果 a > b  结果为 a — （b在范围a以内的最大倍数值）做差。
						a = 6
b = 2
6 - 2 * 3（6以内2的最大倍数值） = 0
6 % 2 = 0

a = 121
b = 6
121 - 6 * 20（121以内的6的最大倍数值为120）
121 % 6 = 1

a和b同为负整数的时候
如果 a > b 则结果仍为 a
						-4 % -8 = -4
-7 % -9 = -7
-1234 % -5678 = -1234
......诸如此类

如果 a < b 则结果为 a — （b在范围a以内的最大倍数值）做差
						 a = -8
b = -3
-8 - (-3 * 2) (-8 以内-3的最大倍数值为-6） =  -2
-8 % -3 = -2

结论一 同为负的模运算可以遵照同为正的整数模运算在结果前加（—）负号
						-a % -b = -c 可以看作 a % b 后在结果前加符号
-a % -b = -c   等价 a % b = c ,  c取反 = -c

-8 % -3 等价 8 % 3 结果取反
-8 % -3 = -2
8 % 3 = 2 结果取反为 -2

优点一    更加直观不容易出错
a 或者 b 一方为负数时
按照模运算公式
	模运算公式 a % b 等价 a - (b * (a / / b) )

更为直观的判断
无论是 -a % b 还是 a % -b 对我来说都是做和运算
我的运算公式 a%b一方为负时:
b恒取绝对值比a大的最小倍数值做和
当 a < 0 , b > 0的时候结果恒为正
a = -8
b = 3
-8 % 3 = 1
等价 -8 + （3 * 3）“b取绝对值刚好比a大的倍数值”
b=3 绝对值刚好比a大的是9  然后两者做和运算	-8 + 9 = 1
					-16 % 12 = 8  等价-16 + 24	= 8
-27 % 13= 12 等价 -27 + 39 =12

当 a > 0 , b < 0的时候结果恒为负
a = 8
b = 3
8 % -3 = -1
等价 -8 + （3 * 3）“b取绝对值刚好比a大的倍数值”
b=3 绝对值刚好比a大的是9  然后两者做和运算	8 + -9= -1
					16 % -12 = -8 等价16 + -24 = -8
27 % -13 = -12 等价 27 + -39 = -12

感谢您的阅读，如果能帮到你我和开心！


展开全文
• 图片源于：... python代码实现： def modExp(a, exp, mod): fx = 1 while exp > 0: if (exp & 1) == 1: fx = fx * a % mod a = (a * a) % mod exp = exp ...
图片源于：https://www.cnblogs.com/celahir/p/5157786.html

python代码实现：
def modExp(a, exp, mod):
fx = 1
while exp > 0:
if (exp & 1) == 1:
fx = fx * a % mod
a = (a * a) % mod
exp = exp >> 1
return fx

代码解释：
参数表

a：底数
exp：指数
mod：模数

while循环中fx存储计算结果，a存储a2, (a2)2, ((a2)2)2等运算结果


展开全文
• 先贴出参考资料地址：...Python 中数学运算常用的函数基本都在 math 模块、cmath 模块中。 Python math 模块提供了许多对浮点数的数学运算函数。 Python cmath 模块包含了一些用于复数运算的函数。 cmath ...
先贴出参考资料地址：http://www.runoob.com/python3/python3-number.html

Python math 模块、cmath 模块

Python 中数学运算常用的函数基本都在 math 模块、cmath 模块中。

Python math 模块提供了许多对浮点数的数学运算函数。

Python cmath 模块包含了一些用于复数运算的函数。

cmath 模块的函数跟 math 模块函数基本一致，区别是 cmath 模块运算的是复数，math 模块运算的是数学运算。

要使用 math 或 cmath 函数必须先导入：


展开全文
• python除法运算总结

千次阅读 2016-11-29 13:51:44
python除法运算包括：传统除法、精确除法、地板除法、求除法。 1、传统除法 如果是整数除法则执行地板除，如果是浮点数除法则执行精确除法。 [python] view plain copy >>>1/2...
• python实现模逆运算

千次阅读 2018-01-01 22:45:55
模逆的定义：要定义这个运算，需要三个整数。a的模逆元素（对n取模）为b，意味着a*b mod m=1，则称a关于m的模逆为b Python实现:#定义一个函数，参数分别为a,n，返回值为b def findModReverse(a,m):#这个扩展欧几里得...
• python中的%（模）运算

千次阅读 2016-10-17 21:30:52
模运算，用得算是比较多，但是负数的模运算还是用的比较少 -1 % 8 = 7 1 % -8 = -7 -1 % -8 = -1 1 % 8 = 1 从上述的例子可以看出，如果模运算的算术符符号相同，则直接等于取绝对值以后，再做模运算（负数则是负...
• python 负数取模运算

千次阅读 2019-05-29 15:52:25
参考 举例: 340%60 = 40 ，怎么来的？ 340 - 60*5 = 40 340 - (比340小的那个可以被60整除的正整数) =....-340%60 = -340 - (比-340小的那个可以被60整除的负整数) = -340 - (-360) = 20 ...-1%3 = 2
• python的数值运算操作符 1.x+y x与y之和 2.x-y x与y之差 ...6.x%y x与y之商的余数，也称模运算 7.-x x的负值，即x(-1)* 8.+x x的本身 9.x**y x的y次幂，即x^y python的数值运算函数 abs(x) x的绝对值 div...
• 这里使用按位运算的方法。 第一步，截取操作区域： img1 = cv2.imread('../material/images/23126-92.jpg') img2 = cv2.imread('../material/images/opencv.jpg') rows,cols,channels = img2.shape roi = im...
• 本文详细介绍了OpenCV-Python图像的加减乘除幂开方对数及位运算相关的函数及语法，并总结了相关函数的作用。OpenCV中图像存储为矩阵，因此图像的运算其实就是矩阵的运算。图像的运算主要包括图像基础算术运算、图像...
• Python实现RSA加密算法 设p、q为质数 n = p*q fn = (p-1)*(q-1) 要满足: 1 < e < fn ， 且 e 与 fn 互质 满足: e*d%fn = 1 (d>1) e 为公钥 ， d 为私钥 把e 和 n 发给 客户端 m 为明文 c = m^e%n c 为...
• 运算实现加减乘除四则运算python，位运算II） （一）加法 a+b=a^b+(a&b)<<1 加法的含义可以拆分为a^b安位取异或，即不同的位上进行相加；(a&b)<<1表示同位的1进行进一位。中间的加号可以...
• 本节进入到Python具体的运算环节。既然是运算就需要有相应的运算符号，具体包括算术运算、关系运算、赋值运算、...表2-4介绍了在Python中相应的算术运算符号。 表2-4　Python中的算术运算符号 需要注意的是，在...
• 摘要：本文主要介绍神经网络中如何用python实现异或运算，有代码以及对代码相关函数功能的详细解释；以及其过程的详细说明；比较适合刚刚入门的学习者。
• 引入模块 from sympy import *#用于求解积分 import cmath#用于进行关于复数的运算，普通函数模块如math和numpy的数学函数无法进行关于复数的运算 #1.积分运算 #求不定积分 ...#2.复数计算 #复数计
• # / 浮点除法 1/2 # 0.5 # // 整除 向下取整 等同于 math.floor() 1//2 # 0 -1//2 # -1 # % 取模运算 1%2 # 1 # divmod(a, b)取商和余数 = (a // b, a % b) divmod(1, 2) # (0, 1) ...
• Python 中复数运算注意点

千次阅读 2018-04-20 11:57:47
print(1.23e-4+9.87e+6j.imag) 结果为 ： 9870000.000123 也就是将1.23e-4+9.87e+6全部看作虚部 print(1.23e+4+9.87e+6j.imag) 结果：9882300.0 与上一个同理 print(1.23e+4+9.87e+6j....结果：5.0 也就是算复数的
• python——位幂运算

千次阅读 2019-10-03 21:47:16
文章目录python初学练习关于位幂运算python具体代码实现代码简析 python初学练习 本篇为一些刚接触python，有一定的python语法基础的，想练习并锻炼自己对python的简单运用，进一步了解关于一些python 语法的运用，...
• Python除支持基本的数学运算外，还提供其他语言不常见的数学特性，如分数运算和复数运算Python的math模块包含高级运算中常见的三角函数、统计函数、对数函数等。 1.1分数 Python的模块fractions中定义了一个特殊...
• python的运算符号

千次阅读 2016-04-10 19:28:11
python 的基本运算符 +，-，*，/ floor除法：//  从Python2.2开始，增加了一个操作符 // ，以执行地板除：//除法不管操作数为何种数值类型，总是会舍去小数部分，返回...除：% 绝对值：abs() abs(-5)=5 求
• python调教整数模运算、分数模运算以及乘法逆元运算！
• 采用书籍Python核心编程（第二版），人民邮电出版社，...Python支持标准位运算，位运算操作符只能用于整数。操作符如下： 操作符 意义 举例 操作符 意义 举例 ~ 按位取反 ~5 &amp; 按位与 5...
• python opencv 图片 算术运算

万次阅读 2018-11-26 00:31:17
import numpy as np import cv2 ...# OpenCV相加是一个渗透运算，而Numpy的相加是模运算。 print(cv2.add(x,y))# 250+10 = 260 =&amp;gt; 255 print(x+y) # 250+10 = 260 % 256 = 4 [[255]] [4] #...
• python矩阵的运算大全 python矩阵运算可以用numpy模块，也可以用scipy模块，主要运算包括以下几种： #1-1python矩阵运算所需模块 import numpy as npimport matplotlib....#1-2定义矩阵和进行相关的矩阵运算 a...
• Python数值运算操作符

千次阅读 2020-03-18 14:21:05
数值运算操作符 操作符及使用 描述 x+y 加，x与y之和 x–y 减，x与 y之差 x*y 乘，x与y之积 x/y 除，x与y之商 10/3结果是3....余数，模运算 10%3结果是1 x ** y 幂运算，x的y次幂，xy...
• Python中的取模运算

万次阅读 2017-08-06 16:52:27
所谓取模运算，就是计算两个数相除之后的余数，符号是%。如a % b就是计算a除以b的余数。用数学语言来描述，就是如果存在整数n和m，其中0 取模运算的两个操作数都必须是整数，可以是负整数，但是b不可以是0，...
• python并行运算Python一直以来都以便利性和程序员友好性着称，但是它并不是周围最快的编程语言。 它的某些速度限制是由于其默认实现cPython是单线程的。 也就是说，cPython一次不会使用多个硬件线程。 虽然您...
• 本文简单介绍了形态变换中的开运算和闭运算，开运算和闭运算是形态学中最为重要的两个组合运算，这两个运算是不同形状不同大小的核对图像变换的影响比较大，开运算有助于断开一些图像间的细小连接或背景上的一些图像...

...

python 订阅