Python整数类型及其运算
在 Python 3 中用 int 来表示整数类型。和C语言、Java 语言不同,这里的整数型数据是没有大小限制的,其在内存中所占的空间是不固定的。
例如,如果用 32 位表示一个整数,那么其能够表示的最大值为 4 294 967 295;如果使用 64 位来表示一个整数,那么其能够表示的最大值为 18 446 744 073 709 551 615。但是在 Python 3 中,没有任何限制,所以也不需要大整数这种特殊数据类型了。
>>> 2 ** 32 – 1 # 32位无符号整数的最大值 4294967295 >>> 2 ** 64 – 1 # 64位无符号整数的最大值 18446744073709551615 >>> a = 2 ** 64 + 100 # 大于64位无符号整数的最大值 >>> type(a) # 查看类型 <class 'int'> # 整型 >>> a # 查看值 18446744073709551716 >>> a.bit_length() # 查看需要表达该值所需要的位数 65 # 需要65位整数来表示该值
本节介绍整数的数值运算,包括加、减、乘、除和幂运算等,这也是整型数据的最基本用法。
可以对两个整数进行加、减、乘、除操作。下面的例子演示了这4种基本操作的结果。
>>> 1+2 # 加法运算 3 # 结果为3 >>> 1-2 # 减法运算 4 -1 # 结果为-1 >>> 200-32 # 减法运算 168 # 结果为168 >>> 2*-9 # 乘法运算 8 -18 # 结果为-18 >>> 12/4 # 除法运算 3 # 结果为3
需要注意的是,在 Python 3 中,如果除法运算不能除尽,那么返回的是浮点数。如 5/2 得到的不是 2,而是 2.5。这与C语言和 Java 语言不同,甚至与 Python 2 也不同。
例如,在 Python 3 中,情况如下:
>>> 12/11 # 除不尽,余数为1 1.0909090909090908 # 结果为小数 >>> 12/7 # 除不尽,余数为5 1.7142857142857142 # 结果为小数
注意,在Python中,如果被除数是负数,那么余数也是负数。例如:
>>> -3/-2 # 除不尽,被除数为-2,余数为-1 1 # 结果为1,而不为2 >>> -3%-2 # 求余数 -1 # 余数为-1而不是1
可以用a**b表示a的b次幂,即ab。例如:
>>> 2**2 # 22 4 # >>> 2**3 # 23 8 # >>> 3**4 # 34 81 #
需要注意的是,如果被除数是整数,那么返回值就是整数;如果被除数是负数,那么返回值就是负数;如果被除数是 0,那么抛出 ZeroDivisionError 异常,表示这是非法操作。例如 :
>>> 12 % 3 # 12除以3的余数 0 # 余数为0 >>> 12 % 5 # 12除以5的余数 2 # 余数为2 >>> 12%-5 # 被除数为-5, 余数也是小于或等于0 -3 # 余数为-3 >>> 5 % 0 # 被除数是0,抛出异常 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero
相反数是绝对值相同、符号相反的数。如 8 的相反数就是 -8,-8 的相反数就是 8,0 的相反数还是 0。可以通过-
来达到取反的目的。
>>> a = 12 # 给a赋值 >>> a # 显示a的值 12 >>> -a # a的相反数 -12 >>> --a # a的相反数的相反数 12 >>> a = 0 # 0的相反数还是0 >>> -a 0
乘除的优先级高于加减。
>>>1+2*3 # 乘除优先级高于加减 7 # 相当于是1+(2*3)
相反数操作符-
的优先级高于加减乘除和幂运算。
>>> a=12 >>>-a+4 # 取反操作符“-”优先级高于加减乘除 -8 # 相当于是(-a)+4 >>> -a*4 # 取反操作符-优先级高于加减乘除 -48 # 相当于是(-a)*4 >>> -a**2 # 取反操作符-优先级高于加减乘除 -144 # 相当于是(-a)**2
本文链接:http://so.lmcjl.com/news/190/