from math import atan import struct for double in [atan(-1), atan(1), 2.0**64, -2.0**64]: binary = struct.pack('>d', double) integer64 = int.from_bytes(binary, 'big') fraction = integer64 & 0xfffffffffffff exponent = (integer64 >> 52) & 0x7ff sign = '-' if double < 0 else '+' print([double, list(binary), sign, exponent, fraction])