01-Python的基础知识3

- 数字

 - 数字常量:

  - 整型:

    - 概念:

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

    - 基本运算:

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

          假设a=15,b=3

运算符 描述 实例
+ 加 - 两个对象相加 a+b返回18
- 减 - 得到负数或是一个数减去另一个数 a-b返回12
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a*b返回45
/ 除 - x除以y a/b返回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

猜你喜欢

转载自www.cnblogs.com/cmn-note/p/10755634.html