这样的题目经常在面试中考到,主要考察位运算的相关知识,通过位运算实现。
之前搜索相关代码,感觉比较费解,现在那《剑指Offer》中面试题47的方法实现简单的将一个数扩大七倍,扩大九倍为例,说明。
先通过位运算实现两个数相加参考《剑指Offer》
int Add(int num1, int num2){
int sum,carry;
do
{
sum = num1^num2;
carry = (num1 & num2) << 1;
num1 = sum;
num2 = carry;
} while (num2 != 0);
return num1;
}
int main()
{
int num;
scanf("%d",&num);
//将一个数扩大七倍
int sum =Add(num<<3,-num);
printf("%d * 7 = %d\n",num,sum);
//将一个数扩大9倍
sum =Add(num<<3,num);
printf("%d * 9 = %d\n",num,sum);
return 0;
}
有更好的方法,希望多交流