目的:
- 了解python中基本的变量类型,运算符,及数据类型。
- 了解python的位运算。
(一)变量、运算符、数据类型
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
注释
- # : 用于单行注释
- ‘‘‘ + ’’’ or “““ + ”””: 用于区间注释
运算符
- 算数运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三元运算
x, y = 4, 5
small = x if x < y else y
print(small) # 4
- 其他运算符
注意!!!
- is, is not 对比的是两个变量的内存地址
- ==, != 对比的是两个变量的值
- 比较的两个变量,若指向的都是地址不可变的类型(str等),那么is,is not 和 ==,!= 是完全等价的;对比的两个变量,若指向的是地址可变的类型(list,dict等),则两者是有区别的。
- 运算符的优先级
- 一元运算 > 二元运算
- 算术运算 > 移位运算 > 位运算
- 比较运算 > 逻辑运算
变量与赋值
- 在使用变量之前,需要对其先赋值。
- 变量名可以包括字母、数字、下划线、但变量名不能以数字开头。
- Python 变量名是区分大小写。
数据类型与转换
查看变量类型 :type(object)
判断一个对象是否是一个已知的类型 :isinstance(object, classinfo)
类型转换 :int(object) float(object)
str(object)
- 基本类型:整型、浮点型、布尔型
- 容器类型:字符串、元组、列表、字典和集合
(二)位运算
原码、反码与补码
计算机内部使用补码来表示
- 原码 :二进制表示(注意,最高位是符号位)。
00 00 00 11 -> 3
10 00 00 11 -> -3
- 反码 :正数的反码就是原码,负数的反码是符号位不变,其余位取反(对应正数按位取反)。
00 00 00 11 -> 3
11 11 11 00 -> -3
- 补码 :正数的补码就是原码,负数的补码是其反码+1。
00 00 00 11 -> 3
11 11 11 01 -> -3
在位运算中符号位也参与运算
按位操作
- 非操作 :~
- 与操作 :&
- 或操作 :|
- 异或操作 :^
- 左移操作 :<<
- 右移操作 :>>
高效利用位运算
n << m :计算 n*(2^m),即乘以 2 的 m 次方
n >> m :计算 n/(2^m),即除以 2 的 m 次方
注意
- Python中bin一个负数(十进制表示),输出的是它的原码的二进制表示加上个负号,巨坑。
- Python中的整型是补码形式存储的。
- Python中整型是不限制长度的不会超范围溢出。
所以为了获得负数(十进制表示)的补码,需要手动将其和十六进制数0xffffffff进行按位与操作,再交给bin()进行输出,得到的才是负数的补码表示。