算法基础课
位运算
1.位运算与进制基础
位运算
- 在处理整型数值时,可以直接对组成整形数值的各个位进行操作。这意味着可以使用屏蔽技术获得整数中的各个位(??)
- &(与),|(或),^(异或),~(非/取反)
- >>和<<运算符将二进制位进行右移或者左移操作
- >>>运算符将用0填充高位;>>运算符用符号位填充高位,没有<<<运算符
- 对于int型,1<<35与1<<3是相同的,而左边的操作数是long型时需对右侧操作数模64
- 与:都为1结果为1, 或:有一个为1结果为1, 异或:两者不同时结果为1
a | b | ~a | a&b | a|b | a^b |
1 | 1 | 0 | 1 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 |
0 | 0 | 0 | 0 | 0 | 0 |
判断奇偶数
获取二进制位是1还是0 (两种解决方案)
交换两个整数变量的值
不用判断语句,求整数的绝对值
异或,可以理解为不进位的加法:1+1=0,0+0=0,1+0=1
性质
交换律 可任意交换运算因子的位置,结果不变
结合律 (即(a^b)^c=a^(b^c))
对于任意数x都有x^x=0,x^0=x,同自己求异或为0,同0求异或为自己
自反性 A^B^B=A^0=A,连续和同一个因子做异或运算,最终结果为自己