Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import struct
- # Returns the exponent and mantissa
- def em(x):
- u = struct.unpack('>Q', struct.pack('>d', x))[0]
- e = ((u >> 52) & 0x7ff)
- m = u & 0xfffffffffffff
- # 1023 is an exponent bias
- return e - 1023, m
- x = 255.123
- e, m = em(x)
- if e >= 53:
- print('large')
- fbits = 0
- ipart = m
- fpart = 0
- elif e >= 0:
- print('integral and fraction')
- fbits = 52 - e
- ipart = m >> fbits
- fpart = m & ((1 << fbits) - 1)
- else:
- print('only fraction')
- fbits = 52 - e
- ipart = 0
- fpart = m
- print('int:', 2**e + ipart)
- print('val:', 2**e + ipart + fpart / (1 << fbits))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement