[英]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
進行了比較,但您將蘋果與橙子進行了比較,特別是將char
與int
。
與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.