这里想要强调的是:多题多解,关键在于思维方式!
Q1:判断一个数是否是2的整数次幂
A1:从二进制的角度思考,就很容易得出答案
int func(int num)
{
return((num > 0) && (num & (num - 1)) == 0);
}
Q2:利用异或交换两数的值
A1:
#include<stdio.h>
int main( )
{
unsigned int a=60; //0011 1100
unsigned int b=13; //0000 1101
printf("a=%d,b=%d",a,b); //输出a,b的值
printf("\n");
a=a^b; //a=a^b=0011 0001 此类似于临时变量,它与一个值异或都能得到另一个的值
b=a^b; //b=a^b=0011 1100 b应该等于a=a^b^b;
a=a^b; //a=a^b=0000 1101 a应该等于b=a^b^a;
printf("a=%d,b=%d",a,b); //输出a,b的值
}