• 締切済み

10進の自然数を2進数に変換するプログラム

10進の自然数を2進数に変換するプログラム(java)を教えてください 整数型の変数aから第bビット目(最初を下位ビットとして第0ビットとする)を取り出すメソッドを作成して、プログラムを組みたいのですが、やり方がいまいちわかりません。 どなたかわかる方よろしくお願いします!

みんなの回答

  • utun01
  • ベストアンサー率40% (110/270)
回答No.3

アルゴリズムの勉強の話なのか実際のプログラミングの話なのかに拠りますが、 ans = Integer.toBinaryString(a).substring(b-1,b); でいいんじゃないでしょうか。 そういう話でなかったら無視してやってください。

cgfrr0121
質問者

補足

現在アルゴリズムの勉強中でこの問題で詰まっています><

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

常套手段は以下の2つでしょう。 ・bビット目のみ1の整数とaのビット毎の論理積(and)を計算 = 「1」をbビット左へシフトしたものと、aとのビット毎の論理積を計算 ・aをbビット右にシフトし、「1」とのビット毎の論理積を計算 メソッドの作り方自体は説明しませんがよろしいですね?

回答No.1

「2で割った余り」は求められますか? 「整数型を2で割った整数型の答え」は求められますか? 同じ事を指定の回数だけ繰り返すループ文は書けますか? それが書けるならプログラムを組めます。 変数aの最下位ビットを「ビット0」、最上位ビットを「ビット31」とすると、bビット目の値は aをb回2で割って、答えを2で割った余り が、bビット目の値になります。 bが0の場合「aをb回2で割って」は「何もしない」ことになります。 なお、2で割ってる最中に答えが0になった場合は「bビット目は0」だと決まるので、途中で止めても構いません。

関連するQ&A