2進法で10101101の数を10進法に直すには、頭に 0b
を付けて
0b10101101
173
のようにするだけです。逆は
bin(173)
'0b10101101'
です。
もうちょっとアルゴリズムらしく記述してみます:
bits = "10101101" x = 0 for b in bits: x = x * 2 + int(b) print(x)
173
x = 173 bits = "" while x > 0: bits = str(x % 2) + bits x = x // 2 print(bits)
10101101
ちなみに、最上位ビットだけマイナスの重みとする2の補数表現では、次のようになります:
bits = "10101101" x = 0 sign = -1 for b in bits: x = x * 2 + sign * int(b) sign = 1 print(x)
-83