评估javascript base10到base2的转换函数
我编写了一个简单的函数,将以10为基数的数字转换为二进制数。我编写的函数是我使用我所知道的简单工具的最佳尝试。我在这个网站上找到了其他的方法,但我还不太了解。我确信我写的函数很奇怪,但它似乎起到了作用 下面是一个JSFIDLE,显示了它的作用: 下面是功能代码:评估javascript base10到base2的转换函数,javascript,testing,binary,numbers,Javascript,Testing,Binary,Numbers,我编写了一个简单的函数,将以10为基数的数字转换为二进制数。我编写的函数是我使用我所知道的简单工具的最佳尝试。我在这个网站上找到了其他的方法,但我还不太了解。我确信我写的函数很奇怪,但它似乎起到了作用 下面是一个JSFIDLE,显示了它的作用: 下面是功能代码: var toBinary = function(x) { x = parseInt(x); if (x < 0) { var k = '-' x = Math.sqrt(Math.pow(x, 2)
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的数字转换函数感兴趣 您可以使用numObj.toStringbase pass base value作为参数,添加了演示
var input=document.getElementByIddecimal;
input.addEventListenerinput,getBinary;
函数getBinary{
var decimal=document.getElementByIddecimal.value;
var binary=Numberdecimal.toString2;
document.getElementByIdbinary.innerHTML=二进制;
};
身体{
左边距:20px;
字体系列:monospace;
字号:18px;
}
p{显示:内联块;}
在此处输入一个数字:
这是该数字,但为二进制:
我可以用什么方式将函数的输出与您描述的方法进行比较?例如,是否有某种方法可以区分base10中的字符串101 1 0 1、数字101 100 1和二进制数101 5?@Jozurcrunch,方法是通过知道它是用哪个基写的。否,否则101与101无法区分。但是,如果您想用所用的基数对数字表示进行注释,通常会将其用作后缀:101₁₀ = 1100101₂, 101₂ = 5.₁₀我尝试在一些输出上使用一些位运算符,并做了一些工作。但是如果我尝试g=toBinary5=101,h=toBinary7=111,那么做XOR g^h,结果是“10”,当我知道它应该是“010”。这是否说明我的代码中存在问题?