Я пытаюсь представить представление числа (представление с плавающей запятой) bit16
с целыми числами unsigned
. Поле фракции здесь отклоняется от стандарта 10 и составляет 8 бит - подразумевая, что поле экспоненты составляет 7 бит, а знак - 1 бит.В C, как я могу использовать функцию printf() для «сохранения» строки?
код у меня выглядит следующим образом:
bit16 float_16(bit16 sign, bit16 exp, bit16 frac) {
//make the sign the number before binary point, make the fraction binary.
//concatenate the sign then exponent then fraction
//
bit16 result;
int theExponent;
theExponent = exp + 63; // bias = 2^(7-1) + 1 = 2^6 + 1 = 63
//printf("%d",sign);
int c, k;
for(c = 6; c > 0; c--)
{
k = theExponent >> c;
if(k & 1)
printf("1");
else
printf("0");
}
for(c = 7; c >= 0; c--)
{
k = frac >> c;
if(k & 1)
printf("1");
else
printf("0");
}
//return result;
}
Мое мышление, чтобы «воссоздать» а 16 bit
последовательность из этих полей, чтобы объединить их вместе, как это так, но если я хочу использовать их в другом приложении я не могу этого сделать. Есть ли способ сохранить окончательный результат после того, как все было напечатано (16-bit
sequence) в переменную, которая затем может быть представлена как целое число без знака? Или есть более оптимальный способ сделать эту процедуру?
Что такое 'бит16'? –
Вы не можете сохранить результат printf. Вы можете использовать 'sprintf', но в этом случае, вероятно, проще просто установить отдельные символы в массиве char. –
@ M.M, это typedef unsigned int. – helpisgood