Given an integer say i of size 32.
Now if i mention a fixed point say 12.
We have to convert/treat above integer to a real number.
So From bit 12....31 will form integer part.
and from 0...11 will be after decimal part.
Now the problem is that we have to print this as real value
without any floating point operation and division operation.
My friend, provided this solution.
for bit 11 -> 5^1 * 10^11 = 500000000000
for bit 10 -> 5^2 * 10^10 = 250000000000
----------
--------
for bit 0 -> 5^11 * 10^0 = ...............(calculate the value)
Add all the above value and print as decimal but after a . char.
Now if i mention a fixed point say 12.
We have to convert/treat above integer to a real number.
So From bit 12....31 will form integer part.
and from 0...11 will be after decimal part.
Now the problem is that we have to print this as real value
without any floating point operation and division operation.
My friend, provided this solution.
for bit 11 -> 5^1 * 10^11 = 500000000000
for bit 10 -> 5^2 * 10^10 = 250000000000
----------
--------
for bit 0 -> 5^11 * 10^0 = ...............(calculate the value)
Add all the above value and print as decimal but after a . char.
void printfloat ( int number, int loc)
ReplyDelete{
unsigned int mask = (1 lshift loc)-1;
int int_part = number rshift loc;
int i = 1;
unsigned int value = 0;
while ( loc-- )
{
if ( number & (1 lshift loc))
{
value += pow(5,i)*pow(10,loc);
}
i++;
}
printf("So the number is %u.%u\n",int_part,value);
}