私は、decimalInput という名前の整数 (現在はテスト目的のリテラル) を取り、バイナリ形式の 10 進数である binaryOutput という文字列に変換するプログラムを作成しています。このガイド (最初のガイド)を使用して、10 進数から 2 進数への変換がどのように行われるかを説明します。これまでの私のコードは次のとおりです。
public class ToBin {
public static void main(String[] args) {
int decimalInput = 19070;
String binaryOutput = "";
while (decimalInput > 0) {
if (decimalInput % 2 == 0) {
binaryOutput = "0" + binaryOutput;
decimalInput = decimalInput / 2;
}
else {
binaryOutput = "1" + binaryOutput;
decimalInput = decimalInput / 2;
}
}
System.out.println(binaryOutput);
}
}
私が持っている現在のリテラル (19070) の場合、プログラムは文字列 "100101001111110" を返します。ただし、これは正しくありません。私のプログラムは「10010100111」を返す必要があります。そのため、何らかの理由で、私のプログラムは末尾に「1110」という余分な文字列を追加しました。最初は、どこかで数学を間違えたのではないかと思いました。というわけで計算してみたところ、問題ないようでした。次に、リテラルの decimalInput をより小さな数値、具体的には 156 に変更してみました。これは、適切な出力である文字列 "10011100" を返します。
decimalInput を long 型に変更して、それが役立つかどうかを確認しようとしましたが、そうではありませんでした。
私が知っているのは、何らかの理由で、より大きな数が私のプログラムを狂わせているということだけです. 理由はわかりません。
これは本当にイライラするので、助けていただければ幸いです。これもクラス用なので、toBinaryString()を使いたいのですが、できません。
ありがとう!