这样的题目常常在面试中考到,主要考察位运算的相关知识,经过位运算实现。面试
以前搜索相关代码,感受比较费解,如今那《剑指Offer》中面试题47的方法实现简单的将一个数扩大七倍,扩大九倍为例,说明。spa
先经过位运算实现两个数相加参考《剑指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;
}方法
有更好的方法,但愿多交流
while