Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで10進数を2進数に変換する方法|再帰と組み込み関数の2つのアプローチ

この記事では、10進数で表された数値を2進数に変換するPythonプログラムについて、その考え方と具体的な実装方法をわかりやすく解説します。

問題文

ある整数が与えられたとき、その数値を2進数に変換します。例えば、10進数の「35」は2進数では「100011」と表現されます。

アプローチ1:再帰を使った解法

再帰処理を利用すると、シンプルなコードで10進数を2進数に変換できます。基本的な流れは以下の擬似コードのとおりです。

DecToBin(num):
    if num > 1:
        DecToBin(num // 2)
        print num % 2

サンプルコード

def DecimalToBinary(num):
    if num > 1:
        DecimalToBinary(num // 2)
    print(num % 2, end = '')
# main
if __name__ == '__main__':
    dec_val = 35
    DecimalToBinary(dec_val)

出力結果

100011

このプログラムでは、すべての変数と関数がグローバルスコープで宣言されています(下図参照)。

Pythonで10進数を2進数に変換する方法|再帰と組み込み関数の2つのアプローチ

仕組みの解説

この再帰処理では、まず引数 num を2で整数除算した値を自分自身に渡し、商が1以下になるまで再帰呼び出しを繰り返します。再帰が最も深い地点に到達した後、呼び出しスタックが戻る過程で、各段階の「num % 2」(2で割った余り)が順番に出力されます。これにより、計算順序とは逆の「上位ビットから下位ビットへ」という正しい桁順で2進数が表示される仕組みです。

アプローチ2:組み込み関数bin()を使った解法

Pythonには標準で用意されている組み込み関数 bin() を使えば、わずか1行で10進数から2進数への変換が可能です。bin() の戻り値は「0b」というプレフィックスが付いた文字列のため、replace() メソッドで「0b」を取り除けば完成です。

サンプルコード

def decimalToBinary(n):
    return bin(n).replace("0b", "")
# Driver code
if __name__ == '__main__':
    print(decimalToBinary(35))

出力結果

100011

こちらの場合も、すべての変数と関数はグローバルスコープで宣言されています(下図参照)。

Pythonで10進数を2進数に変換する方法|再帰と組み込み関数の2つのアプローチ

まとめ

この記事では、Pythonで10進数を2進数に変換する2つの方法――再帰を利用した自作関数によるアプローチと、組み込み関数 bin() を活用する簡潔なアプローチ――を紹介しました。アルゴリズムの動作原理を深く理解したい場合は再帰版を、実務で手軽に変換処理を行いたい場合は bin() 関数の利用をおすすめします。

  1. Pythonで16進数の文字列を10進数に変換する方法を解説

    この記事では、16進数の文字列を10進数に変換する問題の解決策について詳しく解説します。課題の概要16進数形式の文字列が与えられたとき、それを対応する10進数の値に変換することを目標とします。例えば、16進数の「F」は10進数では「15」に相当します。この問題には主に2つのアプローチがあります。力ずく(ブルートフォース)な手法:int関数を使った明示的な型変換組み込みモジュールを活用する手法:astモジュールのliteral_eval関数を使用方法1:int関数を使った変換最もシンプルで一般的な方法は、Pythonの組み込み関数であるint()を利用するものです。この関数は2つの引数を受け取り

  2. Pythonで10進数を2進数に変換する方法|再帰処理とbin()関数の実装例

    この記事では、「10進数を2進数に変換する」という問題に対する解決策を、具体的なコード例とともにわかりやすく解説します。 問題の概要 問題: 与えられた10進数の整数を、それに対応する2進数表現へ変換する。 この問題を解くには、大きく分けて2つのアプローチがあります。順番に見ていきましょう。 方法1:再帰を使った実装 10進数を2進数に変換する基本的な考え方は、「数値を2で割り続け、その余りを記録する」ことです。再帰関数を使うと、除算を繰り返しながら余りを自動的に上位の桁から順に出力できます。 サンプルコード def DecimalToBinary(num): if num &g