重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

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

A 回答 (3件)

アルゴリズムの勉強の話なのか実際のプログラミングの話なのかに拠りますが、


ans = Integer.toBinaryString(a).substring(b-1,b);
でいいんじゃないでしょうか。

そういう話でなかったら無視してやってください。

この回答への補足

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

補足日時:2012/07/11 20:37
    • good
    • 0

常套手段は以下の2つでしょう。


・bビット目のみ1の整数とaのビット毎の論理積(and)を計算
= 「1」をbビット左へシフトしたものと、aとのビット毎の論理積を計算
・aをbビット右にシフトし、「1」とのビット毎の論理積を計算

メソッドの作り方自体は説明しませんがよろしいですね?
    • good
    • 0

「2で割った余り」は求められますか?



「整数型を2で割った整数型の答え」は求められますか?

同じ事を指定の回数だけ繰り返すループ文は書けますか?

それが書けるならプログラムを組めます。

変数aの最下位ビットを「ビット0」、最上位ビットを「ビット31」とすると、bビット目の値は

aをb回2で割って、答えを2で割った余り

が、bビット目の値になります。

bが0の場合「aをb回2で割って」は「何もしない」ことになります。

なお、2で割ってる最中に答えが0になった場合は「bビット目は0」だと決まるので、途中で止めても構いません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!