user6247041
user6247041

Reputation: 23

Decimal to half-precision floating point

I'm currently trying to convert 44/7 to half-precision floating point format. I'm not sure if I've done it correctly so far, so I'd really appreciate it if someone could have a look at it.

44/7 = 6,285714285714...

6 in dual -> 110;
0.285714 * 2 = 0,571428 -> 0
0.571428 * 2 = 1.142856 -> 1
0.142856 * 2 = 0.285714 -> 0
... -> 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1...

-> 110, 01001001001001
-> 1,1001001001001001 -> exponent: 2;

Bias + Exponent : 2+15 = 17 => 1 0 0 0 1

All stitched together: 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 1

I've never converted decimal to 16bit IEEE754, is this the correct way of converting it? Thanks a lot!

Upvotes: 2

Views: 3823

Answers (1)

Reality Pixels
Reality Pixels

Reputation: 416

Correct. As you might expect, it is quantized to 6.28515625.

0100011001001001(base 2) = 4649(base 16)

6.2857142857139996
  = H(4649)
  = F(40C92492)
  = D(40192492 49249107)
  = A(0X1.92492492491070P+2)
6.28515625
  = H(4649)
  = F(40C92000)
  = D(40192400 00000000)
  = A(0X1.92400000000000P+2)

Other data points:

+0.         0000
-0.         8000
-1.         BC00
+1.         3C00
+2.         4000
+4.         4400
+8.         4800
+16.        4C00
+32768.     7800
+Max        7BFF    65504
+.5f        3800
+.25f       3400
+.125f      3000
+.0625f     2C00
+MinNorm    0400    +6.103515625e-05
-MinNorm    8400    -6.103515625e-05
+MinDenorm  0001    +5.9604644775390625e-08
-MinDenorm  8001    -5.9604644775390625e-08
+Infinity   7C00
-Infinity   FC00
+NaN(0)     7E00
-NaN(0)     FE00

Upvotes: 1

Related Questions