C言語の少数に関して質問があります。

小数をバイナリ化した値 "0x40133333" (10進で2.3)
をunsigned intに代入して次のようにして、2.3と表示
されるのを期待しています。

#include<stdio.h>

int main(void){
unsigned int integ = 0x40133333;
printf("%f\n", (float)(integ) ) ;
}
としたのですが、結果はとんでもない値(1075000115.00000)に
なってしまいます。どうしてでしょう??
もともとはバイトオーダの変換をしていてうまくいかず調べ始めたのですが、
ここに行き着いてしまいました。。。orz