We use __builtin_conv_FtoR() to convert floating point values to fixed point values. If we input -1.0F we get 0x8000000, which seems to be correct. However, +1.0F gives 0xffffffff, which is a faulty output. The largest value that gives a correct output is 1.0 – 129*10^-32, which gives 0x7fffff80. What is the reason for that? Why can't we go up to 0x7fffffff?