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位整数来表示该值
本节介绍整数的数值运算,包括加、减、乘、除和幂运算等,这也是整型数据的最基本用法。

1. 四则运算(+-*/)

可以对两个整数进行加、减、乘、除操作。下面的例子演示了这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

2. 幂运算(**)

可以用a**b表示a的b次幂,即ab。例如:
>>> 2**2    # 22    
4           #
>>> 2**3    # 23   
8           #
>>> 3**4    # 34
81          #

3. 得到余数(%)

需要注意的是,如果被除数是整数,那么返回值就是整数;如果被除数是负数,那么返回值就是负数;如果被除数是 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

4. 相反数(-)

相反数是绝对值相同、符号相反的数。如 8 的相反数就是 -8,-8 的相反数就是 8,0 的相反数还是 0。可以通过-来达到取反的目的。
>>> a = 12    # 给a赋值    
>>> a         # 显示a的值
12
>>> -a        # a的相反数
-12
>>> --a       # a的相反数的相反数
12
>>> a = 0     # 0的相反数还是0
>>> -a
0

5. 优先级问题

乘除的优先级高于加减。
>>>1+2*3   # 乘除优先级高于加减
7         # 相当于是1+(2*3)
相反数操作符-的优先级高于加减乘除和幂运算。
>>> a=12
>>>-a+4    # 取反操作符“-”优先级高于加减乘除
-8         # 相当于是(-a)+4   
>>> -a*4   # 取反操作符-优先级高于加减乘除
-48        # 相当于是(-a)*4
>>> -a**2  # 取反操作符-优先级高于加减乘除
-144       # 相当于是(-a)**2