Day03位运算
2018-09-27 本文已影响0人
PythonLi
计算机存储的是补码,所以计算用补码,最后看结果要看原码。
位运算符;&(按位与),|(按位或),^(异或),~(取反),>>(右移),<<(左移)
1. &(按位与)
数字1 & 数字2;二进制的每一位,两个都为1结果才是1,否则为0.
3 & 2 -->00000011 & 00000010 == 00000010
-3 & 2 -->11111101& 00000010 == 00000000

作用;让指定位置上的数置零,或者保留某一位上的值
2、|(按位或)
数字1 | 数字2 ;只要有一个为1,结果就为1,两个0结果都为0
3|2 -->00000011 | 00000010 == 00000011
-3 | 2 -->11111101 | 00000010 == (补)11111111= (原)10000001
3.^(异或)
数字1^数字2; 不同为1,相同为0
32-->0000001100000010^==00000001

4、~(取反)
~数字;将每一位取反
~3--> ~00000011 = 11111100(补码)=11111011(反码)=10000100(原码)
~-3—>11111101 = 00000010

5. 左移(重点掌握)
数字<<位数:将补码移动制定的位数,符号位不变,用0补齐。
规律(正数和负数都可以使用)m << n ==m * (2^n)

6、右移
数字 >>位数;将补码向右移动指定的位数,符号位不变,正数补0,负数补1
规律(只适用于正数);m>>n == m // (2^n)
