伙计们,请帮助我解决我的问题。他是怎么做到的。我只知道第一个二进制到十进制,然后十进制到二进制,但我不知道他是怎么做的。如果这些是类似的线程,请帮助我们。请告诉我们伙计们。谢谢你
import java.io.*;
public class BinaryAddition
{
public static void main(String s[]) throws Exception
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("\nEnter number1: ");
int num1 = Integer.parseInt(br.readLine());
int num4 = num1;
System.out.print("\nEnter number2: ");
int num2 = Integer.parseInt(br.readLine());
int num5 = num2;
int k = 1;
int dec1 = 0,dec2 = 0;
while(num1 != 0)
{
//This is the line that I don't really understand how he did these.
dec1 = dec1 + (num1%10) * k;
k = k * 2;
num1 = num1/10;
}
k = 1;
while(num2 != 0)
{
dec2 =dec2 + (num2%10) * k;
k = k * 2;
num2= num2/10;
}
int num3 = dec1 + dec2;
String str1 = Integer.toBinaryString(num3);
System.out.print("\nAddition of " + num4 + " + " + num5 + " = " + str1);
System.out.println();
} }
答案 0 :(得分:0)
dec1 = decimal number representation of num1(binary)
k = binary factor
dec1 = dec1 + (num1%10) * k;
他在这里用二进制数构建十进制数。
(num1%10) gives the last digit of the number.
Ex: num1 = 110
第一次迭代:
dec1 = 0 +(110 %10) *1
dec1 = 0
k = 1*2
第二次迭代:
dec1 = 0 +(11%10) * 2
dec1 = 2
k = 2*2
第三次迭代:
dec1 = 2+ (1%10) *4
dec1 = 6
最后是110 is 6