Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для bool

Старожил


Сообщения: 229
Благодарности: 9

Профиль | Отправить PM | Цитировать


программка для побайтного вывода значения типа 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? потому что они в объединении и следовательно в одной области памяти? объясните пожалуйста поподробнее

Отправлено: 00:46, 27-06-2007 | #56