读书人

用c或c++或java 不使用加减乘除 怎么将

发布时间: 2012-10-16 09:57:37 作者: rapoo

用c或c++或java 不使用加减乘除 如何将一个数扩大9倍
今天有人问我 用c或c++或java 不使用加减乘除 如何将一个数扩大9倍 ;
我也不太清楚!不知道是*10还是*9;
请问有什么思路没?

[解决办法]
用位移可以算不算,a += a<<3;

其实在汇编语言中经常会看到程序为 leal (%eax,%eax,8), %eax //把寄存器中的值扩大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;} 

读书人网 >C语言

热点推荐