2016-04-18 11 views
1

Java(自由時間)を学び、なぜこれ以上の変数を出力しているのか教えようとしています。私は8ビットを印刷するだけです。私は& 255を入力しようとしましたが、後続の数字を取り除くために何もしませんでした。バイナリ数字で8ビット以上の数字を出力する

例: 合計がある:あなたが10ビットを計算するプログラムを強制的に、そして10ビット(int arr[] = new int[10])を印刷しているため0000111110

Scanner sn = new Scanner(System.in); 
int arr[] = new int[10]; 
int i,m,n,sum,carry=0; 

    System.out.print("Enter 8-bit signed binary number:"); 
      int n1 = sn.nextInt(); 

      System.out.print("Enter another binary number:"); 
      int n2 = sn.nextInt(); 

      for(i=arr.length-1;i>=0;i--){ 
       m=n1%10; 
       n=n2%10; 
       n1=n1/10; 
       n2=n2/10; 
       sum=m+n+carry; 

       if(sum==1) 
       { 
        arr[i]=1; 
        carry=0; 
       } 

      else if(sum==2) 
       { 
        arr[i]=0; 
        carry=1; 
       } 

      else if(sum==3) 
       { 
        arr[i]=1; 
        carry=1; 
       } 

       else{ 

        arr[i]=m+n+carry&255; 
       } 

      } 
      System.out.printf("The sum is:"); 
      for(i=0;i<arr.length;i++) { 
       System.out.print(arr[i]); 
      } 
      System.out.println(""); 
     } 
+0

ユーザーは入力として「疑似バイナリ番号」と入力するものは何ですか? 0と1だけの数字のように? 'nextInt()'で入力を読み込むからです。 – Maljam

+0

申し訳ありません!はい!それはちょうど0か1であると仮定します! – ohdust

+0

正確な問題は何ですか?プログラムが正しく動作しているようです。先行ゼロを取り除き、8桁のみを出力したいですか?これをプリントアウト –

答えて

0

あなたが先頭にゼロを取得する理由は、あります。 /印刷余分なビットを計算しないようにするには、forループの条件を変更することができ、かつ合計が持っているどのように多くのビットを追跡する:任意の一方で、

Scanner sn = new Scanner(System.in); 
    int arr[] = new int[10]; 
    int m,n,sum,carry = 0, nBits = 0; //Declare nBits, number of bits the final sum has 

    System.out.print("Enter 8-bit signed binary number:"); 
    int n1 = sn.nextInt(); 

    System.out.print("Enter another binary number:"); 
    int n2 = sn.nextInt(); 

    for(int i = arr.length-1 ; (n1|n2|carry) != 0 ; i--, nBits++) { 
     m=n1%10; 
     n=n2%10; 
     n1=n1/10; 
     n2=n2/10; 
     sum=m+n+carry; 

     if(sum==1) { 
      arr[i]=1; 
      carry=0; 
     } 

     else if(sum==2) { 
      arr[i]=0; 
      carry=1; 
     } 

     else if(sum==3) { 
      arr[i]=1; 
      carry=1; 
     } 

     else { 
      arr[i]=m+n+carry&255; 
     } 

    } 
    System.out.printf("The sum is:"); 
    for(int i = arr.length-nBits ; i < arr.length ; i++) { 
     System.out.print(arr[i]); 
    } 
    System.out.println(); 
} 

条件は、他の言葉で、(n1|n2|carry) != 0に変更されました3つの変数はゼロに等しくなく、各サイクルでnBitsを反復する。