【问题标题】:Divide a number by 5 without using division operator [duplicate]不使用除法运算符将数字除以 5 [重复]
【发布时间】:2012-12-02 11:11:51
【问题描述】:

可能重复:
implement division with bit wise operator
Divide a number by 3 without using *, /, +, -, % operators

我在一次采访中遇到了这个问题。我想知道是否有任何方法可以在不使用除法运算符的情况下将数字除以 5,以及是否存在仅使用按位运算符的任何可能的解决方案。我想出了一个使用重复减法直到零方法的方法。号码可以有符号和无符号。 请提出任何不使用 +、-、/、* 和 % 的方法。

【问题讨论】:

标签: c algorithm math


【解决方案1】:

我的第一个想法是乘以 0.2(但我不知道如何使用按位运算符实现这一点的解决方案)。

【讨论】:

    【解决方案2】:

    只需将除法减少为从另一个数字中减去一个数字,直到达到零:D

    int number = 25;
    int divisor = 5;
    int result = 0;
    while((number-divisor)>=0){
      result++;
      number = number - divisor;
    }
    

    【讨论】:

    • 但也不允许减法
    • @Omkant - 我不认为减法已被排除。不过,不可否认,这种算法对于较大的 n 会很慢。
    【解决方案3】:

    我似乎从这个链接中找到了一条出路,这似乎为我的问题提供了答案。 http://codegambler.wordpress.com/2009/08/11/division-operation-without-using-division-operator/

    【讨论】:

    • 该代码使用加法和减法:quotient+=division(p-q,divisor);
    • @Kevin 很高兴您指出了这一点。我必须在我的问题中指定了一个适当的算法。我的错。
    猜你喜欢
    • 2012-07-26
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多