簡體   English   中英

在Java中從二進制轉換為十進制

[英]Converting from binary to decimal in Java

我需要編寫一個程序,可以將位轉換為十進制。 每當我輸入一點時,它只會輸出0.0。 我不知道為什么。 我知道這非常簡單,但我只是沒有看到。 任何幫助,將不勝感激。

import java.lang.Math;
import java.util.Scanner;


public class Lab1 {
    static double number = 0;

    public static double toDec(String num) {

        char[] charArray = num.toCharArray();

        for(int i = 0; i<charArray.length;i++) {
            if(charArray[i] == 1) {
                number = Math.pow(2, charArray.length-i);
            }
        }

        return number;


    }


    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        int bit;
        String bitString;

        System.out.println("Please enter a bit");
        bit = keyboard.nextInt();
        bitString = Integer.toString(bit);


        System.out.println(toDec(bitString));



    }

}

您已將charArray[i]1進行了比較,但您將蘋果與橙子進行了比較,特別是將charint

與char'1 '1'比較。

if(charArray[i] == '1') {

另外,您可以在toDec number toDec局部變量; 它不需要存在於該方法之外。

另外,這僅在設置了一位時才有效。 現在,您只使用一個位,但是如果要修改它以使用多個位,則需要進行其他更改。

每次調用toDec且條件為true時,您都覆蓋number 您可能想用+=添加到number ,而不是用=覆蓋以前的值。

Integer#parseInt(String str,int radix)完成工作:

public static Integer toDec(String num) {
  return Integer.parseInt(num, 2);
}

因此,如果您要使用字符串“ 110011”(即51)。對於big-endian,您將必須確定要處理的位數。 因此,如果您讀取字符串並且長度為6位,那么您知道第一位必須向左移動6位。

int l = 6;
long value = 0;

for( int i = 0; i < l; i++ )
{
   int bit = ( charArray[i] == "1" ) ? 1 : 0;

   l = l + ( bit << l-i );
}

對於浮點數,您基本上必須構建一個解釋器,根據浮點數以二進制表示,以對這些位進行解碼。

暫無
暫無

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

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