位运算
015-二进制中1的个数
016-数值的整数次方
040-数组中只出现一次的数字
二进制中1的个数:
一个数减一再和原来的自身做位与运算,会把原本数字最右边的1变为0.
如果一个整数是2的整数次方,那么它的二进制表示中有且只有一位是1,其他位都是0.
两个一样的数字异或之后,会变为0.
对于两个整数m和n,计算需要改变m的二进制表示中的多少位才能得到n。
1、求两个数的异或
2、统计异或结果中1的位数
016-数值的整数次方:
double Power(double base,int exponent) 1
这里会用到错误的设置方法:
设置全局变量,当base < 0并且exponent < 0时,判定为输入无效。
把exponent设置为unsigned int 类型
unsigned int absexponent = (unsigned int)(exponent); if(exponent < 0) {absexponent = (unsigned int)(-exponent); } //然后调用位运算函数 double result = powerwithunsignedexponent(base,absExponent); if(exponent < 0)result = 1.0 / result; //求值位运算 double powerwithunsignedexponent(double base,unsigned int exponent) {if (exponent == 0)return 1;if (exponent == 1)return base;double result = powerwithunsignedexponent(base,exponent >> 1);result *= result;if (exponent & 0x1 == 1){result *= base;}return result; }
123456789101112131415161718192021222324252627