Как преобразовать неподписанное int в число с плавающей точкой?

Мне нужно построить функцию, которая возвращает битовый эквивалент (float) x без использования каких-либо плавающих типов данных, операций или констант. Я думаю, что у меня есть, но когда я запускаю тестовый файл, он возвращает, что тамэто бесконечный цикл. Любая помощь отладки будет принята.

m разрешено использовать любые целочисленные / беззнаковые операции, включая ||, &&, если, пока. Кроме того, я могу использовать только 30 операций

unsigned float_i2f(int x) {
    printf("\n%i", x);
    if (!x) {return x;}
    int mask1 = (x >> 31);
    int mask2 = (1 < 31);
    int sign = x & mask2;
    int complement = ~x + 1;
    //int abs = (~mask1 & x) + (mask1 & complement);
    int abs = x;
    int i = 0, temp = 0;
    while (!(temp & mask2)){
        temp = (abs 

Ответы на вопрос(3)

Ваш ответ на вопрос