如何在 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>

在上面的輸出中,我們呈現了每一步的輸出。

第一種方法適用於將負十進位制數轉換為二進位制字串。第二種和第三種方法僅適用於正十進位制數。建議使用第一種方法,因為它只需要一行程式碼即可編寫。

更新於: 2022 年 8 月 10 日

20K+ 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告