在java中添加二进制数

时间:2017-11-07 10:04:00

标签: java binary

伙计们,请帮助我解决我的问题。他是怎么做到的。我只知道第一个二进制到十进制,然后十进制到二进制,但我不知道他是怎么做的。如果这些是类似的线程,请帮助我们。请告诉我们伙计们。谢​​谢你

  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();

} }

1 个答案:

答案 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

的dec表示