【发布时间】:2017-10-09 16:08:07
【问题描述】:
我正在尝试编写一个代码,允许用户使用模数输入二进制数字(限制为 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”,这显然是错误的。有人可以帮忙吗?
【问题讨论】:
-
好的...您正在尝试将二进制转换为十进制并使用模数。什么!!!我相信二进制到十进制是您添加 2^x 的地方,其中 x 是二进制数中第 1 位的位置。模运算是从十进制到二进制/八进制/十六进制等转换的方法。所以 1001010 是 2^6+2^3+2^1 = 64+8+2=74。只是为了澄清位的位置是从 0 开始从右到左计算的。它与十进制数字不同,但不确定是否要将其考虑在内。
-
Java 中的
^运算符与您可能认为的求幂无关。见What does the^operator do in Java?。 -
使用
Scanner.nextInt()将输入作为一串1 和0 的十进制读数是一件很奇怪的事情。为什么不输入String? -
实际上这更有意义。我完全忘记了 Math.pow();我是个白痴。
标签: java binary decimal java.util.scanner modulus