Эта проблема более корректно обрабатывается, разбивая ее на две части.
Первым является преобразование float в int с эквивалентным битовым шаблоном:
def float32_bit_pattern(value):
return sum(ord(b) << 8*i for i,b in enumerate(struct.pack('f', value)))
Next преобразуйте int в строку:
def int_to_binary(value, bits):
return bin(value).replace('0b', '').rjust(bits, '0')
Теперь соедините их:
>>> int_to_binary(float32_bit_pattern(1.0), 32)
'00111111100000000000000000000000'