1.微软笔试题:快速求取一个整数的7倍
乘法相对比较慢,所以快速的方法就是将这个乘法转换成加减法和移位操作。
可以将此整数先左移三位(×8)然后再减去原值:X << 3 - X。
int _tmain(int argc, _TCHAR* argv[])
{
//快速求取一个整数的7倍
int x=3;
x=x<<3;
x=x-3*2;
cout<<x<<endl;
system("pause");
return 0;
}
2.微软笔试题:判断一个数是不是2的n次幂
思路:如果是2的n次幂,则此数用二进制表示时只有一位是1,其它都是0。减1后,此位变成0,后面的位变成1,所以按位与后结果是0。
int _tmain(int argc, _TCHAR* argv[])
{
int N =8;
if (N>0 && (N&(N-1))==0)
{
cout<<"yes"<<endl;
}
else
cout<<"no"<<endl;
system("pause");
return 0;
}
以上就要注意一点,()千万不要多了