【发布时间】:2017-12-11 04:31:26
【问题描述】:
我编写了一个简单的函数来将一个以 10 为底的数字转换为二进制数。我编写的函数是我使用我所知道的简单工具的最佳尝试。我已经在这个网站上查找了如何做到这一点的其他方法,但我还不太了解。我确信我编写的函数很奇怪,但它似乎可以解决问题。
这是一个 jsfiddle 展示它的实际操作: https://jsfiddle.net/unpkt48e/
这里是功能代码:
var toBinary = function(x) {
x = parseInt(x);
if (x < 0) {
var k = '-'
x = Math.sqrt(Math.pow(x, 2));
}
if (x == 0) {
return 0;
}
var y = x;
var g = [];
while (Math.log2(y) >= 0) {
var n = parseInt(Math.log2(y));
g.push(n+1);
y = y - Math.pow(2, n);
}
var binArray = [];
for (var i = 0; i < g[0]; i++) {
binArray.push(0);
}
for (var i = 0; i < g.length; i++) {
binArray[binArray.length-g[i]] = 1;
}
var binary = binArray.join("");
return (k || "") + binary;
};
我还没有很多工具来评估这个,所以我的问题如下:
这个函数返回的看起来是对的,但是我怎样才能确保我得到的实际上是一个二进制数,而不仅仅是一个看起来像二进制数的字符串。我错过了几个关键部分吗?还是我的方法是死路一条?
另一个问题:JS 中是否有内置函数可以为我执行此操作?大多数情况下,这对我来说是一个学习练习,所以我仍然对生成 base10 到 base2 的数字转换函数感兴趣。
【问题讨论】:
标签: javascript testing binary numbers