2011-05-15 90 views
0

我在做IEE754 - > dec和back转换器在这一刻,并得到了自己与指数对话的问题。使用javascript转换二进制输入

的基本思想是分别转换所有3个部分,然后用(-1)^(SIGN)* 1.MANTISSA * 2 ^(EXPONENT-127)计算它们全部。所有3个都是分开输入的,所以我不需要将二进制分成几部分。

function fl2dec(){ 
    var etuliite = document.getElementById('etu').value; 

    var mant = document.getElementById('man').value; 

    for (i=0;i>-24;i--) 
    { 
     //This part is the problem. i would like to do it something like man = man+(0 or 1)x2^i; 
    } 
     var binn = document.getElementById('eks').value; 
     var decn = parseInt(binn,2); 

    //and here is the math part. 

    } 
    </script> 

    <div style="text-align:center"> 
    <input type="text" id="etu"></input> 
    <input type="text" id="eks"></input> 
    <input type="text" id="man"></input> 
<button onclick="fl2dec;">IEEE 754 -> Dec</button> 
    <input type="text" id="ulos"></input> 
    <br /> 
</div> 

或者如果你有其他的想法如何做到这一点,即时通讯为所有类型的想法打开。

谢谢你,如果你有时间回答我的noobish问题。

回答

0

本文只展示了一些如何在Javascript中执行操作的方法;它并不试图真正解决问题。适当地采取或离开。


“0或1” 可以使用三元表达式来表示:expr ? when_true : when_false,其中when_true是1和when_false为0(或反转),如下面所示。

“2^I” 可以表示为1 << iMath.pow(2, i)

所以...... man = man + (should_be_one ? 1 : 0) * x * (1 << i)

编码愉快