программка для побайтного вывода значения типа double в двоичном представлении:
Код:
#include "stdafx.h"
#include <iostream>
using namespace std;
union bits {
bits(double n);
void show_bits();
double d;
unsigned char c[sizeof (double)];
};
bits::bits(double n)
{
d = n;
}
void bits::show_bits()
{
int i, j;
for( j = sizeof(double) -1; j >=0; j--) {
cout << "Double declaration of the bit" << j << ":";
for( i = 128; i; i >>=1)
if(i & c[j]) cout << "1";
else cout << "0";
cout << "\n";
}
}
int main()
{
bits ob(1991.829);
ob.show_bits();
return 0;
}
меня интересует вот эта часть:
Код:
if(i & c[j]) cout << "1";
else cout << "0";
ведь мы определяем d, а не с[] , почему сравнивают побайтно i и c? потому что они в объединении и следовательно в одной области памяти? объясните пожалуйста поподробнее