

树状数组学习笔记
位运算是补码进行运算的 因此可以解释负数进行位运算时的奇妙现象 补码:正数的补码就是其本身 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) E:原码:10000001; 补码:01111111. lowbit:lowbit这个函数的功能就是求某一个数的二进制表示中最低的一位1 E:lowbit(10001)=1,lowbit(10010)=10。 lowbit的实现方式: 1. int lowbit(x) { return x - (x & (x - 1)); } 2.(推荐) int lowbit(x) { return x & -x; } E:lowbit(1000011)=100011..