以下内容改编自:leetcode boywithacoin_cn
复习一下python的位运算符:【着重注意一下取反操作,取反之后是补码形式】
(a & b) 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
eg:6 & 5 = 4 二进制解释:0110 & 0101 = 0100
(a | b) 按位或运算符:参与运算的两个值,如果相应位其中有一个1,则该位的值为1
eg:6 | 5 = 7 二进制解释:0110 | 0101 = 0111
(a ^ b) 按位异或运算符:当两对应的二进位相异时,结果为1
eg:6 ^ 5 = 3 二进制解释:0110 ^ 0101 = 0011
(~a ) 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。
eg:~6 = -7 二进制解释:~0000 0000 … 0110 =1111 1111 … 1001【补码】=1000 0000 0111
a << 2
左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。
eg:5<<2=20 二进制解释:0000 … 0000 0101 << 2 = 0000 … 0001 0100
a >> 2
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
eg:5>>2=1 二进制解释:0000 … 0000 0101 >> 2 = 0000 … 0000 0001
python中整除://