作业总结
-
数值交换
a = 12 b = 13 a,b = b,a print(a,b)
-
判断列表元素的类型
isinstance(数据,类型)
sum = 0 list1 = [20, 'abc', [1,2], 12.5, '123'] for num in list1: if isinstance(num, int) or isinstance(num, float): sum += num print(sum)
进制
在计算机编程中,整数可以通过十进制,二进制,八进制和十六进制来表示
-
十进制
基数:0,1,2,3,4,5,6,7,8,9 进位:逢十进一 位权:123 = 100 + 20 + 3
-
二进制
基数:0,1 进位:逢二进一 100(2) = 4(100) 位权:101(2) = 1 * 2 ** 0 + 0 * 2 ** 1 + 1 * 2 ** 2
-
八进制
基数:0,1,2,3,4,5,6,7 进位:逢8进1 位权:123(8) = 3 * 8 ** 0 + 2 * 8 ** 1 + 1 * 8 ** 2
-
十六进制
基数:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 进位:逢16进1 位权:123(16) = 3 * 16 ** 0 + 2 * 16 ** 1 + 1 * 16 **2
-
程序中表示不同进制的数
在程序中直接写的数字是10进制 num1 = 110 # 这是一个十进制 print(num1)
0b+二进制 num1 = 0b1101 print(num1) print(bin(num1),type(bin(num1)))
0o+八进制 num1 = 0o1234567 print(num1) print(oct(num1))
0x+十六进制 num1 = 0xffff print(num1) print(hex(num1))
位运算
计算机存储数据只能存储数字数据,而且存的是数字的补码。
计算机对数据进行运算的时候是使用补码进行运算的,将数据偶从计算机中读取出来看到的是原码
-
原码
符号位+真值
说明:0 - 正;1 - 负
最高位为符号位
真值:去掉符号位后数字的二进制表示
-
反码
负数的反码:原码的符号位不变,其他位取反
整数的反码:就是原码
-
补码
正数的补码是原码
负数的原码是反码加1
-
位运算:
&(按位于),|(按位或),~(按位取反),^(按位异或),>>(右移),<<(左移)
数字1 & 数字2 -> 每一位上的数都为1结果就是1,有0就是0 0111(补码) & 1101(补码) --> 0101(补码) 特点:一个位上的数和1与,可以保留这个位上的数;和0与可以置0 应用:判断一个数的奇偶性 如果一个数的二进制的最低位是1就是奇数 num & 1 == 1 奇数 num & 1 == 0 偶数
数字1 | 数字2: 1 | 1 = 1 1 | 0 = 1 0 | 1 = 1 0 | 0 = 0 特点:置1
~数字1 : 将数字上的每一位取反 ~1 = 0 ~0 = 1
数字1 ^ 数字2 :相同为0,不同为1 1 ^ 1 = 0 0 ^ 0 = 0 1 ^ 0 = 1 0 ^ 1 = 1 应用:加密,判断两个数是否相等
数字1 << N :数字1左移N位,结果为 数字1 * 2 ** N 数字1 >> N :数字1右移N位,结果为 数字1 // 2 ** N 应用:快速的进行乘2的幂函数或者除2的幂函数