常用小功能总结
1,求一个数转化成二进制后包含1的个数
1 int func(int x){ 2 int count=0; 3 while(x){ 4 count++; 5 x=x&(x-1); 6 } 7 return count; 8 }
2,判断一个数是不是 2 的 N 次方(2,4,8,16...),不可用循环语句。
1 /* 这样的数转换为二进制是 10、100、1000。如果 x 减 1 后与 x 做与运算,答案若是 0 ,则 x 是 2 的 N 次方。*/ 2 3 4 !(x & (x-1))
3, 找出两个数字中的最大值。不用判断语句。
1 int max = ((a+b)+abs(a-b)) / 2;
4, 不用任何中间变量,将 a,b 的值进行交换。
1 // 方法1:异或运算(不用担心超界问题) 2 3 4 a = a ^ b; 5 b = a ^ b; 6 a = a ^ b; 7 8 // 方法2:加法运算 9 10 a = a + b; 11 b = a - b; 12 a = a - b;
所有博文均为原著,如若转载,请注明出处!