位运算符通常在图形、图像处理和创建设备驱动等底层开发中使用。 使用位运算符可以直接操作数值的原始 bit 位,尤其是在使用自定义的协议进行通信时。 使用位运算符对原始数据进行编码和解码也非常有效。
代码如下:
# 位运算 # 二进制: 0 1 ''' 1 1 8 4 2 1 ''' a = 3 print(bin(a)) # 0b 11 a = 13 print(bin(a)) b = 0b10111 # 0b 二进制 二进制的表示: 0b1000101 print(int(b)) c = -8 # -0b1000 0000 1000 print(bin(c)) c = 0o6430 # 0o 开头的都是八进制 里面的数字不能超过8 print(int(c)) # 开头表示0x 0-9 a-f # 应用: FFFFFF 000000 FF0000 00FF00 d = 0x9ab16 print(int(d)) ''' & | ~ ^ << >> ''' print(3 & 2) ''' 类似and 1 True 0 False 0000 0011 & 0000 0010 ------------ 0000 0010 | 类似or 1 True 0 False ''' print(5 | 3) ''' 0000 0101 | 0000 0011 -------------- 0000 0111 ''' print(~5) # 取反 将十进制的数字对应的二进制进行取反操作。 ''' 0000 0101 取反: 1111 1010 -6 1111 1010 减1 1111 1001 取反 0000 0110 6 看第一位(第一位是符号位,只要第一位是1的就是负数,第一位是0的就是整数) -6: 0000 0110 1111 1001 反码 1111 1010 补码 ''' # 异或 ^ 相同的是0 不同的是1 print(3 ^ 5) ''' # 步骤: 1. 左边的数字转成二进制 2. 右侧的数字转成二进制 3. 对齐,上下进行比较(相同的是0 不同的是1) 4. 将计算的结果转成十进制 3 0000 0011 5 0000 0101 ---------------- 0000 0110 -----> 6 ''' # 左移: print(2 << 1) # 4 print(2 >> 1) # 1 ''' 2的二进制: 0000 0010 左移: m<<n m*2的n次方 右移: m>>n m//2的n次方 ''' print(16 << 2) print(16 >> 2) print(-0b1000000) print(64 << 1)