day004-位运算小常识

day004–位运算小常识

1,进制

① 常用进制有10进制(89, 23);2进制(1010, 1111);8进制(765,01014);16进制(af,013ed)。计算机直接能存储的数据只有数字;数字以二进制补码的形式存储。
② 进制之间的转换:

print(num)               # 转10进制
print(bin(num))          # 转二进制
print(oct(num))          # 转八进制
print(hex(num))          # 转16进制

2, 原码,反码,补码

① 原码 : 最高位表示符号位(0表示正、1表示负),后面是数的真值(数字的绝对值的二进制)。
10(原码): 00001010
25263(原码): 0110001010101111
-10(原码):10001010
② 反码:正数的原码、反码、补码一样;负数的反码:原码的符号位不变,其余各位取反。
10(反码):00001010
-10(反码):11110101
③ 补码;负数的反码加1。
10(补码):0 0001010
-10(补码):1 1110110

3,位运算

① 位运算: &(按位与)、|(按位或)、^(异或)、~(取反)、<<(左移)、>>(右移)
例:
1 & 1 -> 1, 1 & 0 -> 0, 0 & 0 -> 0
111 & 101 -> 101
② 位运算的运用
应用1:快速判断整数的奇偶性
所有的偶数在存储的时候最低位都是0,所有奇数在存储的时候最低位都是1
整数 & 1 -> 提取出数字在存储的时候的最低的值

num = 89
if num & 1 == 1:
    print('奇数')
else:
    print('偶数')

应用2:整数 << N --> 整数快速乘以2的N次方;
整数 >> N -> 整数快速整除(2的N次方)

print(3 << 1)      # 6
print(5 << 1)      # 10
print(-2 << 1)     # -4
print(6 >> 1)      # 3
print(5 >> 1)      # 2
print(-5 >> 1)     # -3

猜你喜欢

转载自blog.csdn.net/lijianmingweibo/article/details/112996809
今日推荐