floatの絶対値をビット演算で求めたいんだけど

float a = -1.5;
long* t = (long*)&a;
t &= 0x7FFFFFFF; // これで a=1.5 になる

これは問題ある?
互換性とか