簡體   English   中英

如何使用模數在Java中將二進制轉換為十進制?

[英]How to convert binary to decimal in java using modulus?

我正在嘗試編寫代碼,允許用戶使用模數以二進制形式輸入數字(限制為8位數字)。 到目前為止,我有:

導入java.util.Scanner; 公共班級主要{

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a Binary Number (8 digit limit)");
    int binaryNum = input.nextInt();
    int m = 0;
    int l;
    for (int n = 0; n <= 7; n++){
        l = (2^n);
        if(binaryNum%(10^(n+1)) == (10^n)){
            m = m + l;
            binaryNum = binaryNum - (10^n);
        }
    }
    System.out.println("Decimal: " + m);
}

}

我嘗試輸入數字1001010,但每次輸入時,它都會顯示為“十進制:2”,這顯然是錯誤的。 有人可以幫忙嗎?

import java.util.Scanner; 

public class Main {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);

    System.out.println("Enter a Binary Number (8 digit limit)");

    int binaryNum = input.nextInt(); // reading binary number

    int m = 0; // to store decimal number

    int l = 0; // to manage power of 2
    int d = 0; // to store intermediate result

    while (binaryNum != 0){ // looping till all digits are over

        d = binaryNum % 10; // taking the last bit of the binary number

        d *= Math.pow(2, l++); // finding 2^l 

        binaryNum /= 10; // dividing the binary number by 10 to shift one bit

        m += d; // add the result to decimal 
    }

    System.out.println("Decimal: " + m); // display result
}
}

我已經編輯了代碼,以便將binaryNum正確地轉換為十進制。 希望這可以幫助。!!

如果使用基數2,可以使用Integer.parseInt將字符串轉換為整數:

int decimalValue = Integer.parseInt(c, 2);

您應該能夠獲得它的二進制值。

例:

System.out.println(Integer.parseInt("1001010", 2));

輸出: 74

現在您需要實現的就是限制用戶可以輸入的字符串的長度,您希望將其設置為8,這樣就可以了。

如果您不想使用parseInt,也可以執行以下操作:

        int binaryNumber = 10201; //example input binary
         int decimal = 0;
            int p = 0;
            while(true){
              if(binaryNumber == 0){
                break;
              } else {
                  int temp = binaryNumber%10;
                  decimal += temp*Math.pow(2, p);
                  binaryNumber = binaryNumber/10;
                  p++;
               }
            }
        System.out.println(decimal);

在這種情況下,我正在從int轉換,我想這對您來說還可以,您只需要在Scanner上接受int而不是String ,或者將String轉換為int完成您需要的工作,我認為您濫用了實施中的某些操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM