一、进制和字符串
进制
(1)计算机在存储数字的时候都是以二进制的形式存储
(2)主要掌握二进制、八进制、十进制、十六进制的进位规则及进制之间的转换
(3)Python对进制的支持:支持二进制、八进制、十进制和十六进制的整数
二进制:0b011;八进制:0o756;十六进制:0xDF12
进制转换:(结果为字符串)
bin(整数)-->转换成二进制
oct(整数)-->转换成八进制
hex(整数)-->转换成十六进制
原码、补码、反码
计算机在存储数据的时候,是以二进制补码的形式存储的;因为计算机只能进行加法操作,只能存储补码才能在负数的加法有效;
计算机内存的最小单位是位(bit):1位只能存两个状态(0或1)
注意:反码和补码只对负数而言,正数的反码和补码就是原码本身
(1)原码:整数数字的二进制形式
(2)反码:负数的反码就是这个数的原码的符号位不变,其他位数取反
(3)补码:负数补码就是它的反码加1
位运算
符号:&(按位与)、|(按位或)、^(异或)、~(取反)、>>(右移)、<<(左移)
(1)按位与:数值1 & 数值2
二进制的每一位两个都为1,结果为1 ,否则为0
(2)按位或:数值1 | 数值2
二进制的每一位只要有一个为1,结果为1,否则为0
(3)异或:数值1 ^ 数值2
二进制的两位不同为1,相同为0
(4)取反:~数值
将每一位取反
(5)左移:数值 <<位数
将补码向左移动指定的位数,符号位不变,在符号位的后面补指定个数的0
特例:当负数左移的位数较多时,符号位被覆盖,此时没有符号位,但计为负数
例如:-10<<4
10001010(原码) --> 11110101(反码) -->11110110(补码)
01100000(补码) --> 01011111(反码) -->10100000(原码)
规律:m<<n == m*(2^n)
print(10<<1,10<<2,10<<3,10<<4,10<<5)
结果为:20 40 80 160 320
注意:遇到某一个数需要乘以2^n时,用左移位运算计算效率更高
(6)右移:数值>>位数
将补码向右移动指定的位数,符号位不变,在符号位的后面补指定个数的0(正数)或1(负数)
规律(只适用于正数):m>>n == m//(2^n)
print(1024>>1,1024>>2,1024>>3,1024>>4,1024>>5)
结果为:512 256 128 64 32
注意:遇到某一个正数需要除以2^n时,用左移位运算计算效率更高
二、字符串
python中通过单引号或者双引号引起来的字符集就是字符串,字符串中的字符集是由不同的字符组成
Unicode编码
python字符串中的字符都是采用Unicode编码
世界上最常用的两种编码表:Unicode和ASCII
Unicode码表是通过2个字节来对一个字符进行编码(0~2^16-1),几乎包含了世界上所有的符号;ASCII码表是通过1个字节对一个字符进行编码(0~2^7)
Unicode码表中包括了ASCII码表
chr(数字):获取数字在Unicode编码中对应的字符
ord(字符):获取字符对应的Unicode码
转义字符
一些特殊功能和具有特殊意义的字符,直接放到字符串的引号中无效,需要通过\来转义
常见的转义字符:
\n --> 换行
' --> '
\t --> 制表符
\ --> \