如何在 JavaScript 中将十进制转换为二进制?
本教程将教我们如何将十进制数字转换为二进制数字字符串。二进制数仅由 0 和 1 组成的字符串。计算机不理解高级编程语言,因此我们需要用低级语言(表示为二进制字符串)来指示计算机。
此外,二进制字符串也用于数字电子学。在这里,我们有三种方法可以将十进制数转换为二进制字符串。
使用 toString() 方法
使用右移运算
使用取模运算符
使用 toString() 方法
toString() 方法是JavaScript 内置的字符串方法,我们可以用它将任何变量转换为字符串。此外,我们还可以用它将数字转换为字符串。如果我们没有向toString() 方法传递任何参数,它会将数字转换为基数为 10 的十进制字符串。如果我们传递不同的基数,它会将数字转换为具有已定义基数的字符串。
语法
用户可以按照以下语法使用 toString() 方法将十进制转换为二进制。
let decimal = 10; // to convert positive decimal to binary let binary = decimal.toString( redix ); // to convert negative decimal to binary Let binary = (decimal >>> 0).toString( redix );
在上述语法中,要将负十进制数转换为二进制字符串,用户可以看到我们需要将数字右移 0 位。>>> 将带符号的数字右移虚拟位以将其转换为相应的正数。当我们应用虚拟位移位运算时,带符号数字的位保持不变,但它只是将数字转换为正数。
如果用户在不使用虚拟位移位运算的情况下对负数执行十进制到二进制的转换,则 toString() 方法只会在整数前面附加“-”符号。它不会返回负数的实际二进制字符串。
参数
radix − 它是用户希望将数字转换为字符串的基数。在我们的例子中,radix 将始终为 2,因为我们需要将十进制数转换为基数为 2 的字符串,即二进制字符串。
示例
<html> <head> <title>Convert decimal to binary using JavaScript.</title> </head> <body> <h2>Convert decimal to binary using JavaScript <i> toString(2) </i> method.</h2> <h4>Examples of decimal and its binary string.</h4> <div id = "binary"> </div> </body> <script> var binrayOutput = document.getElementById("binary"); let decimal = 1435; binrayOutput.innerHTML += "1435 == " + decimal.toString(2) + ". <br/> "; decimal = -1435; binrayOutput.innerHTML += "-1435 == " + (decimal >>> 0).toString(2) + ". <br/> "; // shifting the fake bit decimal = 0; binrayOutput.innerHTML += "0 == " + decimal.toString(2) + ". <br/> "; decimal = 9658798; binrayOutput.innerHTML += "9658798 == " + decimal.toString(2) + ". <br/> "; </script> </html>
使用右移运算
此方法将使用右移运算符将十进制数转换为二进制字符串。用户可以按照以下算法和语法来实现我们的目标。
语法
while (decimal > 0) { if (decimal & 1) { binary = "1" + binary; } else { binary = "0" + binary; } decimal = decimal >> 1; }
算法
步骤 1 − 创建一个空字符串和一个十进制数。
步骤 2 − 迭代十进制数,直到它大于 0。
步骤 3 − 要获取十进制数的最后一位,执行 1 与十进制数的按位 & 运算。如果最后一位是 1,则在二进制字符串的前面附加“1”。否则,在二进制字符串的前面附加“0”。
步骤 4 − 使用右移运算符从十进制数中删除最后一位。
示例
在下面的示例中,我们实现了上述算法来将十进制数转换为二进制字符串。
<html> <head> <title> Convert decimal to binary using JavaScript. </title> </head> <body> <h2> Convert decimal to binary using <i> Right shift operator </i> in JavaScript. </h2> <h4> Converting 756435 to binary string. </h4> <div id = "binary"> </div> </body> <script> var binrayOutput = document.getElementById("binary"); let decimal = 756435; let binary = ""; while (decimal > 0) { if (decimal & 1) { binary = "1" + binary; } else { binary = "0" + binary; } decimal = decimal >> 1; } binrayOutput.innerHTML = binary; </script> </html>
使用取模运算符
我们将在此方法中使用取模和除法运算。我们将获取数字对 2 的取模,并不断将其除以 2。如果数字的取模为 1,我们将在二进制字符串的前面附加“1”。否则,我们将在二进制字符串的前面附加“0”。
语法
用户可以按照以下语法实现此方法。
// iterate through the number till it becomes 0. while (decimal > 0) { // if modulo of number with 2 is ‘1’, append 1 in front of binary string. Otherwise append 0. if (decimal % 2 == 1) { binary = "1" + binary; } else { binary = "0" + binary; } // divide number by 2. decimal = Math.floor(decimal / 2); }
示例
在下面的示例中,我们实现了上述方法,使用取模运算符将十进制转换为二进制。
<html> <head> <title> Convert decimal to binary using JavaScript. </title> </head> <body> <h2> Convert decimal to binary using <i> Modulo operator </i> in JavaScript. </h2> <h4> Converting 98 to binary string. </h4> <div id="binary"></div> </body> <script> var binrayOutput = document.getElementById("binary"); let decimal = 98; let binary = ""; while (decimal > 0) { if (decimal % 2 == 1) { binary = "1" + binary; } else { binary = "0" + binary; } binrayOutput.innerHTML += "decimal is = " + decimal + " reminder is = " + decimal % 2 + " Quotient is = " + Math.floor(decimal / 2) + ". <br/>"; decimal = Math.floor(decimal / 2); } binrayOutput.innerHTML += "Binary string is " + binary; </script> </html>
在上面的输出中,我们呈现了每一步的输出。
第一种方法适用于将负十进制数转换为二进制字符串。第二种和第三种方法仅适用于正十进制数。建议使用第一种方法,因为它只需要一行代码即可编写。