我是靠谱客的博主 着急老师,这篇文章主要介绍用加法模拟乘法,现在分享给大家,希望可以做个参考。

ps:思路是1.把十进制乘法转成了二进制乘法,2.二进制乘法可以用位移来实现。

/*
      用加法模拟乘法
 */
 
#include <stdio.h>
#include <stdlib.h>
//#define T(O,R,N,i) (N&(1<<i)) && (O+=(R<<i))
#define T(o,a,b,i) (b&1<<i) && (o+=a<<i)
int simulateMutiply(int a,int b)
{
    int out=0;
    T(out, a, b, 0);
    T(out, a, b, 1);
    T(out, a, b, 2);
    T(out, a, b, 3);
    T(out, a, b, 4);
    T(out, a, b, 5);
    T(out, a, b, 6);
    T(out, a, b, 7);
    T(out, a, b, 8);
    T(out, a, b, 9);
    T(out, a, b, 10);
    T(out, a, b, 11);
    T(out, a, b, 12);
    T(out, a, b, 13);
    T(out, a, b, 14);
    T(out, a, b, 15);
    T(out, a, b, 16);
    T(out, a, b, 17);
    T(out, a, b, 18);
    T(out, a, b, 19);
    T(out, a, b, 20);
    T(out, a, b, 21);
    T(out, a, b, 22);
    T(out, a, b, 23);
    T(out, a, b, 24);
    T(out, a, b, 25);
    T(out, a, b, 26);
    T(out, a, b, 27);
    T(out, a, b, 28);
    T(out, a, b, 29);
    T(out, a, b, 30);
    T(out, a, b, 31);
    return out;
 
}
int main(void) {
    printf("%d n",simulateMutiply(26,3));
    return EXIT_SUCCESS;
}

最后

以上就是着急老师最近收集整理的关于用加法模拟乘法的全部内容,更多相关用加法模拟乘法内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部