没有运算符'*'的乘法 - 浮动扩展

时间:2017-10-22 15:12:32

标签: c

如何在没有'*'或'/'运算符

的情况下将两个数相乘

它与其他问题不同,因为我也需要 float

我需要考虑消极的积极的,真实的分数,每种可能的乘法

我有一个想法,我会先做实数(5,3,8等等),然后是分数(0.5,0.33333,等等......)

float fraction = (float)x - (int)x; // I can calculate the fraction with this

我认为我可以将该分数“乘以”为int,然后与实数相乘,但问题是我如何将它返回原来的样子(除以十分之一除以)

有了这个(执行此功能,直到数字返回大于0):

float multiBy10(float a)
{
    float backup = a;
    for(int i = 0; i < 10; i++, a += backup);
    return a;
}

我看到了这个here但是使用int和bit操作它不适用于float number

int divs10(int n)
{
    int q, r;
    n = n + (n>>31 & 9);
    q = (n >> 1) + (n >> 2);
    q = q + (q >> 4);
    q = q + (q >> 8);
    q = q + (q >> 16);
    q = q >> 3;
    r = n - q*10;
    return q + ((r + 6) >> 4);
    // return q + (r > 9);
}

0 个答案:

没有答案