- 数字

 - 数字常量:

  - 整型:

    - 概念:

      - 指代平常数学上的整数常量。Python中整型指代int类型。

    - 基本运算:

      - 可以执行平常的+,-,*,/ ,%以及其他操作

          假设a=15,b=3

运算符

描述

实例

+

加 - 两个对象相加

a+b返回18

-

减 - 得到负数或是一个数减去另一个数

a-b返回12

*

乘 - 两个数相乘或是返回一个被重复若干次的字符串

a*b返回45

/

除 - x除以y

a/b返回5.0

%

取模 - 返回除法的余数

b%a返回3

//

取整除 - 返回商的整数部分(向下取整)

b//a返回0

**

幂 - 返回x的y次幂

a**b返回3375

    - 进制数

      - 十进制,包括0-9以内的数字。

      - 二进制0b开头, 只有0和1。

      - 八进制0o开头。包括0-8。

      - 十六进制0x开头。包含0-9,a-f,数字上以0x开头表示。

      - 使用 int()函数进行转换

1 int('1101')     #返回1101   
2 int('1101',2)  #返回13
3 int('1101',8)   #返回577
4 int('1101',10)  #返回1101
5 int('1101',16)   #返回4353

      -  使用内置函数bin(x),oct(x),hex(x) 

1 print(bin(45))  #0b101101   返回整数i的二进制表示
2 print(oct(45))  #0o55    返回i的八进制表示

3 print(hex(45)) #0x2d      返回i的十六进制表示

      - 各种进制之间的相互转换,百度呗!

  - 布尔型:

    - 使用True 和False 来表示“真”与“假”。 True相当于整数值1,False相当于整型0。

print(type(True))   #输出True的类型 <class'bool'>

  - 浮点数:

    - 浮点型用来处理实数,即带有小数的数字。

      - 十进制数形式:6.33, 5.22, 8.9等等

      - 指数形式: 89e4  就是表示 89*10**3

  - 复数:

    - 由实部和虚部组成,通常表示为x+yj.

    - 复数的两个部分都以属性名的形式存在,分别为real与imag. 

z = 5.2 + 6.9j 
 print(z.real, z.imag) #显示5.2 6.9

    - 使用complex(实部, 虚部)

complex(2,8.2)#返回(2+8.2j)

  

 - 数字运算

操作符

说明

实例

**

幂运算

 3**2

~

按位运算

 ~7

 

-

负号


*、%、/、//

乘法、余法、真除法、floor除法


+、-

加法、减法


<<、>>

向左移位、向右移位

 

&

按位与

 

^

按位异或

 

|

按位或

 

<、<=、>、>=、==、!=

比较运算:小于、小于等于、大于、大于等于、等于、不等于

 

not

逻辑非

 

and

逻辑与

 

or

逻辑或

 

      - 计算优先级,按从上至下的顺序操作符的运算优先级依次从高到低,可以使用括号(括号优先级最高)改变优先级

v1 = 8*9+6
v2 = 8*(9+6)
print(v1,"----",v2)  #结果为78 ---- 120

      - 计算过程自动转换数据类型:将简单的数据类型转换为复杂的数据类型

        - 复杂程度顺序:布尔类型 < 整数 < 浮点数 < 复数

v1 = 5+6.5
v2 = 5+6.1+(8+9j)
print(v1,type(v1),"----",v2,type(v2))
#11.5 <class 'float'> ---- (19.1+9j) <class 'complex'>

      - 在Python 3.x中,“/”运算执行真除法,无论操作是否为整数,计算结果保留小数部分,类型为floor类型。“//”为floor除法。

v1 = 3/5;
v2 = 3//5;
print(v1,"----",v2)
#0.6 ---- 0

      - 位运算 

        - 按位取反~  

#计算机内部整数用补码表示,正数补码和原码一样
#正数求补码: 原码==补码  【原码(取反)->反码(加1)->补码(符号位不改变)】
#负数求补码: 原码(取反)->反码(加1)->补码(符号位不变)


# 按位取反~:零变成1,1变成0,(符号位也需要改变)
~7
#(1)7的8位二进制补码形式为              0 0000 0111,
#(2)按位取反得返回结果的原码:         1 1111 1000,(已经为负数)
#(3)按照运算规则取反得(有符号位):1 0000 0111 
#(4)求补码,加一:                          1 0000 1000 即输出 -8

~-5
#(1)-5的8位二进制原码形式为                  1 0000 0101,
#(2)按位取反为                                     0 1111 1010,
#(3)按照运算规则加一得补码(有符号位):0 1111 1011
#(4)取反码:                                        0 0000 0100 即输出 4

        - 按位与&

3&8
#(先右对齐,看列)如果同一列两个都为1,才为1,否则为0
#3: 0000 0011
#8: 0000 1000
#      0000 0000
#输出结果为0

-8&-9
# -8:
#原码:1000 1000
#反码:1111 0111
#补码:1111 1000

# -9:
#原码:1000 1001
#反码:1111 0110
#补码:1111 0111

#两个补码相与 :1111 0000
#取反               1000 1111
#结果:补码:    1001 0000  = 整型的 -16

        - 按位异或  ^:按位异或指为上的数相同时结果为0,否则为1;

7^4
#0000 0111
#0000 0100
#0000 0011
#结果为3

7^-4
#0000 0111
#1000 1100 (-4的补码)
#1 1011  -> 1 0100 -> 1 0101
#结果为-5

        - 按位或  | :按位异或指为上的数有一个为1时结果就为1,否则为0;

4|5 
#结果为5
-4|5
#结果为-3

        - 位移 :

# (x<<y)将x按二进制形式向左移动y位,末尾补0,符号位不变。
1<<2
#结果为4
-1<<2
#结果为-4


# (x>>y)将x按二进制形式向右移动y位,末尾补0,符号位不变。
8>>2
#结果为2
-8>>2
#结果为-2

        - 逻辑运算

#逻辑非not
not True,not Flase
# 返回(Flase,True)

#逻辑与and
#"x and y" 在两个操作数为True是才为True,否则为Flase

#逻辑或or
#"x or y" 在两个操作数为Flase是才为Flase,否则True

#

        - 比较运算:返回的值为逻辑值

8>9
#结果返回Flase

4<8
#结果返回True