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