Как перевести 32-битное вещественное значение в текст я знаю что это умеет делать функция - sprintf просто хочется понять алгоритм этого действия если у вещественного числа нет дробной части то с этим я разобрался а вот если с дробью к примеру вещественное значение 1.1 целое число единица дробное число тоже единица 1066192077 - десятичный формат 3F8CCCCD - шестнадцатеричный формат для разбора нам понадобится бинарный формат 00111111100011001100110011001101 0 - 1 бит знак числа 01111111 - 8 бит экспонента 00011001100110011001101 - 23 бита мантиса экспонента при целом числе (1) равна (127) это хоть и считается положительным значением экспоненты но при таком значение смещение в мантисе нулевое то есть все 23-бита мантисы отданы для значения дробной части 00011001100110011001101 значение этих бит в десятичном формате - 838861 Кто в теме не подскажите как из этих бит мантисы получить значение дробной части то есть заявленную единицу
assch, 3F8CCCCD16 = 0011.1111.1000.1100.1100.1100.1100.1101 = 0.01111111.00011001100110011001101 знак = 0 → число >0 экспонента = 01111111 = 127 + 0 → степень = 0 (число ― 20)×2(23- 0)= 00011001100110011001101 = 838861 число ― 1 = 838861/223= 838861/8388608 = 0,10000002384185791015625 число = 0,10000002384185791015625 + 1 = 1,10000002384185791015625 ≈ 1,1 больше внимания уделяйте разделам "WASM.ARTICLES" и "WASM.Публикации"
внимательно смотрим на мантиссу числа, для наглядности я выделил повторяющуюся группу из двух нулей и двух единиц: 00011001100110011001101 ≈ 0.0011.0011.0011.0011.0011.0011 Лайфхак [math]n[/math]-разрядный двоичный код из чередующихся нулей и единиц, заканчивающийся на единицу, соответствует числу [math]\overbrace{01.01.01.01\cdots 01.01}^{n}=\frac{1}{3}(2^{n}-1)[/math] [math]n[/math]-разрядный двоичный код из чередующихся нулей и единиц, заканчивающийся на ноль, соответствует числу [math]\overbrace{10.10.10\cdots 10.10}^{n}=\frac{2}{3}(2^{n}-1)[/math] [math]n[/math]-разрядный двоичный код из чередующихся двух единиц и нуля, заканчивающийся на ноль, соответствует числу [math]\overbrace{110.110.110\cdots 110}^{n}=\frac{6}{7}(2^{n}-1)[/math] [math]n[/math]-разрядный двоичный код из чередующихся единицы и двух нулей, заканчивающийся на два нуля, соответствует числу [math]\overbrace{100.100.100\cdots 100}^{n}=\frac{4}{7}(2^{n}-1)[/math] [math]24[/math]-разрядный двоичный код из двух чередующихся нулей и двух единиц, соответствует числу [math]\overbrace{0011.0011.0011\cdots 0011}^{24}=\frac{3}{15}(2^{24}-1)=\frac{1}{5}(2^{24}-1)[/math] Если [math]24[/math]-разрядное двоичное число из двух чередующихся нулей и двух единиц сдвинуть вправо на [math]1[/math] разряд, тогда получим вашу мантиссу, соответствующую числу [math]\overbrace{0.0011.0011.0011\cdots 0011.001}^{24}=\frac{1}{2}\cdot\frac{1}{5}(2^{24}-1)=\frac{1}{10}(2^{24}-1)[/math]