C Programming - Floating Point Issues - Discussion

Discussion Forum : Floating Point Issues - General Questions (Q.No. 3)
3.
If the binary eauivalent of 5.375 in normalised form is 0100 0000 1010 1100 0000 0000 0000 0000, what will be the output of the program (on intel machine)?
#include<stdio.h>
#include<math.h>
int main()
{
    float a=5.375;
    char *p;
    int i;
    p = (char*)&a;
    for(i=0; i<=3; i++)
        printf("%02x\n", (unsigned char)p[i]);
    return 0;
}
40 AC 00 00
04 CA 00 00
00 00 AC 40
00 00 CA 04
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
117 comments Page 12 of 12.

Pramod Kumar said:   1 decade ago
p = (char*)&a;

Can anyone explain meaning of this line?

Shubham Gorde said:   10 years ago
For little Indian method, least significant bytes stored first (means at lowest address).

Address value.

503 0100 0000.
502 1010 1100.
501 0000 0000.
500 0000 0000.

And statement p = (char *) &a:: stores low byte address (i.e 500 here) of 1 into p (as p is char pointer).

So answer is 00 00 AC 40.

Usman ali ar said:   10 years ago
Why it is C than B?

Shyam said:   10 years ago
Hi answer is C please any one can explain?

Rahul said:   10 years ago
0100 -> 4
0000 -> 0

1010 -> A
1100 -> C

0000 -> 0
0000 -> 0

0000 -> 0
0000 -> 0

How to convert this why we are using 4, A, C, 0, 0?

Raji said:   9 years ago
Thank you so much @Preethi.

Megha Verma said:   9 years ago
Thank you so much @Shilpa M.Raj. Your explanation is really good and clear.


Post your comments here:

Your comments will be displayed after verification.