It's a special floating point format, but you should go by x86 standards, since x86 is the pervasive standard hardware, anything else would be specified.
On x86 processors the data is in little endian format - on x86, integers and floating points use the same endianess.
1.0 float is 00 00 80 3F in memory not the 01 00 00 00 you would see when storing integer 1 on x86. Even more fun, 1.0 double is 00 00 00 00 00 00 F0 3F, not even the same number as float. The fact your compiler can cast them to the same number does not mean they are stored the same.
hello.c x changed to integer(gdb) print &x$3 = (int *) 0xbfd03d20(gdb) x 0xbfd03d200xbfd03d20: 00000000000000000000000000000001(gdb)
hello.c#include<stdio.h>main(){float x=1;float y=2;printf("%f",x);y=x+1;}someserver@neverlandranch.com:/var/scripts# gcc -g hello.csomeserver@neverlandranch.com:/var/scripts# gdb a.outGNU gdb 6.8-debianCopyright (C) 2008 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free software: you are free to change and redistribute it.There is NO WARRANTY, to the extent permitted by law. Type "show copying"and "show warranty" for details.This GDB was configured as "i486-linux-gnu"...(gdb) break 6Breakpoint 1 at 0x80483dd: file hello.c, line 6.(gdb) runStarting program: /var/scripts/a.outBreakpoint 1, main () at hello.c:66 float y=2;(gdb) print x$1 = 1(gdb) print /t x$2 = 1(gdb) print &x$3 = (float *) 0xbfea8ed0(gdb) x 0xbfea8ed00xbfea8ed0: 00111111100000000000000000000000(gdb) quit
$4 = (int *) 0xbfdc0de0(gdb) x /4tb 0xbfdc0de00xbfdc0de0: 00000000 00000001 00000000 00000000(gdb)$4 = (float *) 0xbffe7800(gdb) x /4tb 0xbffe78000xbffe7800: 00000000 00000000 10000000 00111111(gdb)