首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Divide函数

Divide函数
EN

Stack Overflow用户
提问于 2014-06-11 21:18:05
回答 1查看 104关注 0票数 0

我需要用Jack语言编写divide函数。

我的代码是:

代码语言:javascript
复制
function int divide(int x, int y) {

    var int result;
    var boolean neg;

    let neg = false;
    if(((x>0) & (y<0)) | ((x<0) & (y>0))){
        let neg = true;
        let x = Math.abs(x);
        let y = Math.abs(y);
    }

    if (y>x){
        return 0;
    }

    let result = Math.divide(x, y+y);

     if ((x-(2*result*y)) < y) {

        if (neg){
            return -(result + result);
        } else {
            return (result + result);
        }
    } else {
        if (neg){
            return -(result + result + 1);
        } else {
            return (result + result + 1);
        }
    }
}

该算法是次优的,因为每个乘法运算还需要O(n)个加法和减法运算。

我可以计算乘积2*result*y而不需要任何乘法吗?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-06-12 02:50:34

这是一个(无签名的)恢复除法(x/y)的实现,我实际上不认识Jack,所以我不是百分之百确定

代码语言:javascript
复制
var int r;
let r = 0;
var int i;
let i = 0;
while (i < 16)
{
    let r = r + r;
    if ((x & 0x8000) = 0x8000) {
        let r = r + 1;
    }
    if ((y ^ 0x8000) > (r ^ 0x8000)) {  // this is an unsigned comparison
        let x = x + x;
    }
    else {
        let r = r - y;
        let x = x + x + 1;
    }
    let i = i + 1;
}
return x;

您应该能够将其转换为带符号的除法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24163998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档