1.进制转换
计算机只能存储和处理二进制数据
int类型 - 包含所有的整数,整数可以表示为十进制,二进制,八进制和十六进制
1)十进制
a.基数:0到9
b.进位:逢十进一 ->10 == 10
c.位权:123 = 100+20+3 = 1×10^2 + 2×10^1 + 3×10^0
2)二进制
a.基数:0和1
b.进位:逢二进一 ->10 == 2
c.位权:111(2)= 1×2^2 + 1×2^1 + 1×2^0 = 7(10)
d.表示方式:在二进制数前加前缀0b/B
e.转换:bin()
3)八进制
a.基数:0到7
b.进位:逢八进一 ->10 == 8
c.位权:111(8)= 1×8^2 + 1×8^1 + 1×8^0 =73(10)
d.表示方式:在八进制数前加前缀0o/O
e.转换:oct()
4)十六进制
a.基数:0到9,a到f a(10)b(11)c(12)d(13)e(14)f(15)
b.进位:逢十六进一 ->10 == 16
c.位权:111(8)= 1×16^2 + 1×16^1 + 1×16^0 =273(10)
d.表示方式:在十六进制数前加前缀0x/X
e.转换:hex()
2进制
num = 0b1011 # 2^3 + 2^1 + 2^0 = 11
num2 = 0B110
print(num, num2) # 11 6
print('转2进制:', bin(200), bin(0o56), bin(0xaf))
8进制
num = 0o67 # 6*8^1 + 7 = 48+7 = 55
print(num) #55
print('转8进制:', oct(200), oct(0b110111), oct(0x1f))
16进制
num = 0x34 # 16*3 + 4 = 52
num2 = 0x2f # 16 * 2 + 15 = 32 + 15 = 47
print(num, num2)
print('转16进制', hex(200), hex(0b1110110110101))
2.原码反码补码
计算机存数据的时候只能存数字,而且存的是数字二进制的补码
单位换算:
位(bit)
1字节(byte)= 8bit
1kb = 1024byte
1M = 1024kb
1G = 1024M
1T = 1024G
注意:正数的原码,反码和补码一样
1.原码 = 符号位(0表示正,1表示负)+真值(数字转换成2进制的值)
10的原码: 00000000 00000000 00000000 00001010
-10的原码:10000000 00000000 00000000 00001010
2.负数的反码:符号位不变,其他位取反(0变1,1变0)
10的反码:00000000 00000000 00000000 00001010
-10的原码:11111111 11111111 11111111 11110101
3.负数的补码:反码加1
10的补码:00000000 00000000 00000000 00001010
-10的补码:11111111 11111111 11111111 11110110
Example:
2 + (- 3) == -1
2的原码: 00000010
-3的原码: 10000011 ->(反码)11111100->(补码)11111101
2-3 = 00000010 + 11111101 = 11111111(补)->(反)11111110->(原)10000001 = -1
计算机用原码计算会出错,所以用补码计算(原因是计算机没有减法器)
3.运算符
python支持的运算符:数学运算符,比较运算符,逻辑运算符,位运算符,赋值运算符
数学运算符:+,-,,/, %(取余),//(整除),*(幂运算)
1)print(10 % 3) # 求10除以3的余数
求余的作用:
判断一个数是否能被另外一个数整除
判断一个数的奇偶性:让数字对2取余,看结果是0还是1
判断一个数的最后几位
print(num % 10) # 取一个数的个位数
print(num % 100)
2)// - 求商,取商的整数部分
print(5//2) # 2
num = 123
print(num//100) # 1 (取百位)
print(num % 10) # 3 (取个位)
print(num // 10 % 10) # 2(取十位)
print(num % 100 // 10) # 2(取十位)
3)** - 求次方值
x ** y - 求x的y次方
print(2**3) # 8
print(16 ** 0.5) # 4 (开2次方)
print(8 ** 3) # 2 (开3次方)
比较运算符:>, <, >=, <=, ==, !=
所有比较运算符的结果都是布尔值(不是True就是False)
!=判断是否不相等
注意:python中比较大小可以像数学一样连写表示范围
x = 5
print(1 <= x <= 100) # True