神奇的位操作
基本知识:
& 位与操作
| 位或操作
^ 按位异或操作
~ 位非操作
计算机中数字有原码,反码,补码三种存储格式,通常都是补码形式;
一个正数的原码,反码和补码相同;一个负数,符号位为1,其余各位对原码按位取反,然后加1;
技巧总结:
1、n & (n - 1)可以去掉n位表示中的最后一个1,利用这个可以统计一个数的二进制表示中1的个数;
2、每个数乘以2,就相当于向左移动一位。所以2的n次幂就是1向左移动n位;
3、异或操作
a ^ b ^ b = a ^ (b ^ b) = a ^ 0 = a;
a ^ b = b ^ a;
4、已知负数补码,求该十进制负数。假设补码用N表示,则十进制数位(~N)+1;
不要让执行的勤奋掩盖思考的懒惰!