0

10 進数から 2 進数への変換に問題があります。最初から0を追加する際に文字列ビルダーを使用してバイナリを変換する方法は?

while (num != 0){    
  int digit = num % 2;

  buf.append(digit);
  num = num/2;
}   

System.out.println(num);
4

5 に答える 5

1

これを試すことができます

        int num=10;
    StringBuilder buf1=new StringBuilder();
    StringBuilder buf2=new StringBuilder();
    while (num != 0){
        int digit = num % 2;
        buf1.append(digit); // apend 0101 order
        num = num/2;
    }
    String binary=buf1.reverse().toString();// reverse to get binary 1010
    int length=binary.length();
    if(length<8){
       while (8-length>0){
           buf2.append("0");// add zero until length =8
           length++;
       }
    }
    String bin=buf2.toString()+binary;// binary string with leading 0's
    System.out.println(bin);

ライブデモはこちら.

出力

00001010

次のように配列で同じことを行うことができます

    int num=10;
    int[] binArr=new int[8];
    int j=0;
    while (num != 0){
        int digit = num % 2;
        binArr[binArr.length-1-j]=digit;
        num = num/2;
        j++;
    }
    System.out.println(Arrays.toString(binArr).replaceAll("\\,|\\[|\\]",""));
于 2013-08-21T04:45:50.553 に答える
1

10 進数は、数値を 2 で割って余りを書き留めることで 2 進数に変換できます。たとえば、12 を 10 進数として取ると、2 進数は 1100 になります。

手動出力:

2 12

2 6 0

2 3 0

2 1 1

1

10進数を2進数に変換するコードは

class Binary
    {
        public StringBuffer calBinary(int decnum){

          StringBuffer sBuf = new StringBuffer();
               int temp=0;
               while(decnum>0){
                      temp = decnum%2;
                      sBuf.append(temp);
                     decnum = decnum / 2;
               }
         return sBuf.reverse();
   } }  


 public class Sri {

   public static void main(String[] args) throws IOException {
    System.out.println(" please enter the decimal number to convert into binary");
    BufferedReader br = new   BufferedReader(new InputStreamReader(System.in));
    int num = Integer.parseInt(br.readLine());

    Binary K = new Binary();
    StringBuffer result = K.calBinary(decnum);
    System.out.println(result);
              }
 }
于 2013-08-21T04:41:16.933 に答える
1

文字列ビルダー クラスの reverse() メソッドを使用してみてください。次のようなもの:

buf = buf.reverse();
于 2013-08-21T04:41:24.007 に答える