#include <stdio.h>
#include <limits.h>
void printbin(void* num) {
size_t i, j;
unsigned char *pc = (unsigned char* )#
pc += sizeof(num) - 1;
for (i = 0 ; i < sizeof(num) ; pc--, i++ ) {
for ( j = 0; j < CHAR_BIT ; j++ ) {
putchar( *pc & ( 1 << (CHAR_BIT - j - 1) ) ? '1' : '0');
}
putchar(' ');
}
return ;
}
int main(void) {
size_t i, j;
float obj = 1234.0;
float obj1 = 1234.0;
unsigned char *pc = (unsigned char* )&obj;
pc += sizeof(obj) - 1;
for (i = 0 ; i < sizeof(obj) ; pc--, i++ ) {
for( j = 0; j < CHAR_BIT ; j++ ) {
putchar( *pc & ( 1 << (CHAR_BIT - j - 1) ) ? '1' : '0');
}
putchar(' ');
}
puts("");
printbin(&obj1);
return 0;
}
This is the output :
01000100 10011010 01000000 00000000
00000000 00011101 11111110 11100100
Why is it so ? It seems very strange.Can anyone please help me
understand whats going on here?
PS: I am using a little-endian processor