Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. import struct
  2.  
  3. # Returns the exponent and mantissa
  4. def em(x):
  5. u = struct.unpack('>Q', struct.pack('>d', x))[0]
  6.  
  7. e = ((u >> 52) & 0x7ff)
  8. m = u & 0xfffffffffffff
  9.  
  10. # 1023 is an exponent bias
  11. return e - 1023, m
  12.  
  13.  
  14. x = 255.123
  15. e, m = em(x)
  16.  
  17. if e >= 53:
  18. print('large')
  19. fbits = 0
  20. ipart = m
  21. fpart = 0
  22. elif e >= 0:
  23. print('integral and fraction')
  24. fbits = 52 - e
  25. ipart = m >> fbits
  26. fpart = m & ((1 << fbits) - 1)
  27. else:
  28. print('only fraction')
  29. fbits = 52 - e
  30. ipart = 0
  31. fpart = m
  32.  
  33. print('int:', 2**e + ipart)
  34. print('val:', 2**e + ipart + fpart / (1 << fbits))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement