用c或c++或java 不使用加减乘除 如何将一个数扩大9倍
今天有人问我 用c或c++或java 不使用加减乘除 如何将一个数扩大9倍 ;
我也不太清楚!不知道是*10还是*9;
请问有什么思路没?
[解决办法]
用位移可以算不算,a += a<<3;
其实在汇编语言中经常会看到程序为 leal (%eax,%eax,8), %eax //把寄存器中的值扩大9倍
[解决办法]
[解决办法]
- C/C++ code
int a = 1; a = (int)&((char*)(a<<3))[a];
[解决办法]
实现一个加法不就的了!
- C/C++ code
int add(int a, int b){ int s, c; s = a ^ b; c = a & b; while (c) { c <<= 1; a = s; b = c; s = a ^ b; c = a & b; } return s;}int main(int argc, char *argv[]){ unsigned int seed; int n; int i; seed = time(NULL); srand(seed); for (i = 0; i < 100; i++) { n = rand(); printf("%11d * 9 = %11d:%11d\n", n, add(n, n << 3), n * 9); } return 0;}