一 (进制转换, 补码反码, 字符基础, 位运算)
1.进制的转换
二进制bin(整数)
八进制oct(整数)
十六进制hex(整数)
二进制 前面加 0b
八进制 前面加 0o
十六进制 前面加 0x
十进制转其他进制:
二进制: 不断除2取余数,直到除以商为0为止.从最后取得余数为最高位
八进制: 不断除8取余数...
16进制: 不断地除16取余数...
二进制转其他进制:
二进制转八进制:从左边取3位为8进制1位.不足则补0
二进制转十六进制:从左边取4位为16进制1位,不足则补0
例: 十进制数123
二进制数:1111 0011
八进制数: 173
十六进制数; 7b
例 : 11101101
8进制: 355
16进制:ED
print(0b1010)
print(0o753) # 40+3+64*7
print(0x16)
反码 补码
- 正数的反码和补码就是原码
- 负数的反码就是符号位不变,其他位取反
补码就是反码+1
位运算:
& 与: 两者都为1 结果为1
| 或: 两者有一者为1, 结果为1
~ 取反: 0-->1 1-->0 将每一位取反
^ 异或: 相异为1
<< 左移: 向左移动相应的位数,后面位数不够取0
m<<n == m*(2^n)
print(10<<2) # 10 * 4 = 40
二.字符的基础
首先,python中的字符采用的是Unicode编码.两个字节对一个字符
编码
print(ord('a')) # 得到字符对应的Unicode编码
print(chr(65)) # 得到unicode 编码对应的字符
1.字符串
str1 = r"i don't \n like cat"
print(str1) # 字符前面加上r/R 可以阻止转义字符转义
str1 = "duke is good"
print(str1[1])
print(str1[-1]) # 字符串+[下标] 可以相应的单个字符
2.字符的切片
注意: 从开始的下标开始,到结束下标前的所有的字符,默认步长为1.
str2 = "abcdefghj"
print(str2[0:5]) # 从下标0开始取到4的下标的字符,步长默认为1
print(str2*2) # *n 字符串重复n遍
3.字符的判断运算符
str3 = 'lllll'
str4 = '11111'
print(str3 == str4) # 判断是否相等
print(ord('1'), ord('l'))
print(str3>str4) # 比较的是第一个字符的编码值大小.
# 如果相同一直往后进行比较.
# 如果判断字符全为数字或者字母.可以使用比较运算.
print(str3 in str4) # 判断字符串1是否在字符串2中. not in 则是不在
4.字符串中的内置函数
str11 = 'abcd153'
print(str11.capitalize()) # 将首字母大写
print(str11.rjust(8, '0')) # 右对齐, 8位字符,不够则补0.
print(str11.ljust(10, '-'))
print(str11.center(15,'0')) # 中间对齐.其他部位补0
print(str11.count('a')) # 判断字符串str11中 a字符出现的次数
print(str11.endswith('53')) # 判断是否以字符'53'结尾
print(str11.startswith('a')) # 判断是否以'a'开头
print(str11.find('15')) # 返回'15'第一个字符的下标,没有就返回-1
print(str11.isnumeric()) # 判断是否只含有数字(中文数字也可以)
print(str11.istitle())
print(str11.join('153')) # 注意:是将str11插入到'153'每一个字符之间