1_3_infiniteseries.py 1.15 KB
__author__ = 'chunk'

import struct


def float2bits(f, fmt='bin'):
    if fmt == 'hex':
        return hex(struct.unpack('!l', struct.pack('!f', f))[0])
    return bin(struct.unpack('!l', struct.pack('!f', f))[0])


def double2bits(d, fmt='bin'):
    if fmt == 'hex':
        return hex(struct.unpack('!q', struct.pack('!d', d))[0])
    return bin(struct.unpack('!q', struct.pack('!d', d))[0])


def float2bin(num):
    # http://stackoverflow.com/questions/16444726/binary-representation-of-float-in-python-bits-not-hex
    bits = [bin(ord(c)).replace('0b', '').rjust(8, '0') for c in struct.pack('!f', num)]
    print bits
    return ''.join(bits)


def double2bin(num):
    # http://stackoverflow.com/questions/16444726/binary-representation-of-float-in-python-bits-not-hex
    bits = [bin(ord(c)).replace('0b', '').rjust(8, '0') for c in struct.pack('!d', num)]
    print bits
    return ''.join(bits)


def infiniteseries():
    s = 0
    tmp = -1
    i = 0
    while float(s) != float(tmp):
        i += 1
        tmp = s
        s += float(1.0 / i)
        print tmp,s

    print i, s, tmp


if __name__ == '__main__':
    print float2bin(1.0)
    infiniteseries()
    pass