Floats are stored in a format defined in IEEE 754. See here: http://en.wikipedia.org/wiki/IEEE_754-2008
Side note: You're passing a double into a float in your first instruction. This will be cast at compile-time, but some compilers might complain. If you mean to use a float, append an f: float a = 12.5f;
You're passing a float into a %d argument. That is not good. Compilers may behave differently here, some might warn you about it. If you want to pass in a float, use %f.
You're taking the IEEE-754-formatted integer and printing it out. See the link in item 1 to see what you're printing.