如何在 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() 方法只会在整数前附加"-"符号。它不会返回负数的实际二进制字符串。
参数
redix − 它是用户想要将数字转换为字符串的基数。在我们的例子中,基数始终为 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>
在上面的输出中,我们渲染了每个步骤的输出。
第一种方法适用于将负十进制数转换为二进制字符串。第二种和第三种方法仅适用于正十进制数。建议使用第一种方法,因为它只需一行代码即可编写。