10 進数から 2 進数への変換に問題があります。最初から0を追加する際に文字列ビルダーを使用してバイナリを変換する方法は?
while (num != 0){
int digit = num % 2;
buf.append(digit);
num = num/2;
}
System.out.println(num);
これを試すことができます
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("\\,|\\[|\\]",""));
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);
}
}
文字列ビルダー クラスの reverse() メソッドを使用してみてください。次のようなもの:
buf = buf.reverse();