相关疑难解决方法(0)

四舍五入到下一个2的幂

我想写一个函数,返回最近的2个数的下一个幂.例如,如果我的输入是789,输出应该是1024.有没有任何方法可以实现这一点而不使用任何循环但只使用一些按位运算符?

c optimization bit-manipulation

170
推荐指数
14
解决办法
16万
查看次数

提取Javascript编号的指数和尾数

是否有一种相当快速的方法从Javascript中的数字中提取指数和尾数?

AFAIK有没有办法在后面的Javascript一个号码,这使得它在我看来位拿到我正在寻找一个因子分解问题:找到mn使得2^n * m = k对于给定的k.由于整数分解是在NP中,我只能假设这将是一个相当难的问题.

我正在实现一个用于生成Javascript的GHC插件,需要实现decodeFloat_Int#decodeDouble_2Int# 原始操作 ; 我想我可以重写使用该操作的基本库的部分来做他们正在以其他方式进行的操作(这不应该太难,因为所有数字类型都有数字作为他们的表示,但它'如果我不需要,那就好了.

有没有办法以一种甚至是高效的方式,通过一些黑暗的Javascript伏都教,聪明的数学或其他方式来做到这一点,或者我应该只是扣下来并拥有基础库?

编辑 根据ruakh和Louis Wasserman的出色答案,我提出了以下实现,这似乎运作得很好:

function getNumberParts(x) {
    if(isNaN(x)) {
        return {mantissa: -6755399441055744, exponent: 972};
    }
    var sig = x > 0 ? 1 : -1;
    if(!isFinite(x)) {
        return {mantissa: sig * 4503599627370496, exponent: 972};
    }
    x = Math.abs(x);
    var exp = Math.floor(Math.log(x)*Math.LOG2E)-52;
    var man = x/Math.pow(2, exp);
    return {mantissa: sig*man, exponent: exp};
}
Run Code Online (Sandbox Code Playgroud)

javascript math haskell ghc ieee-754

16
推荐指数
3
解决办法
8730
查看次数

标签 统计

bit-manipulation ×1

c ×1

ghc ×1

haskell ×1

ieee-754 ×1

javascript ×1

math ×1

optimization ×1