2

我真的坚持为 JavaScript 制作一个函数。

我知道如何在头脑中进行从二进制到十进制的数学运算,但我不知道如何写出来。我无法使用 parse int 或字符串。

我不是要求任何人为我做这件事,我只是想知道从哪里开始。

function BintoDec(x)
{
var number = x 

任何帮助都是很好的帮助。提前致谢

编辑

我能够想出这个函数,但我最终得到 0 作为我的输出。帮助!

function BinToDec(x) {
var result = 0;
var multiple = 1;
for (var i = 0; i < x.length; i++)
{
var digit = x[x.length - 1 - i];

if (digit == '1') {
result += multiple;
}
multiple *= 2;
}
return result;
}

print(BinToDec(101));
4

4 回答 4

5

我不是要求任何人为我做这件事我只是想知道从哪里开始

你可以使用这个: -

var digit = parseInt(binary, 2);

还要检查parseInt

编辑:-(没有看到您不想使用 parseInt)

您可以尝试遍历字符串并尝试这样:-

for(i = 0; i < len; i++)
{
  r = r * 2 + (arr[i] == '1' ? 1 : 0);
}
于 2013-10-17T19:34:46.717 回答
0

这是一个正确且格式正确的解决方案:

  function bin2dec(num){
    return num.split('').reverse().reduce(function(x, y, i){
      return (y === '1') ? x + Math.pow(2, i) : x;
    }, 0);
  }
于 2014-02-12T08:41:02.853 回答
0

首先编写一个检查并确保所有字符都是 0 或 1,一旦完成并验证,开始在字符串中向后循环并将 2 乘以 0 或 1 的计数器的幂:

         "0100101010"
                  <-

            +2^0 x 0
           +2^1 x 1
...

如果你真的需要实现你自己。或者您可以使用:

var binary = "0100101010";
parseInt(binary, 2);
于 2013-10-17T19:42:51.050 回答
0

我会在函数体中使用类似以下的内容:

var dec = 0, char;
for (var i = x.length - 0; i >= 0; i--) {
    char = x.charAt(i);
    if (char) {
        dec += Math.pow(2, i);
    }
}
于 2013-10-17T19:48:23.053 回答