Показать сообщение отдельно
Старый 02.05.2006, 17:54     # 2
GOre01
Junior Member
 
Аватар для GOre01
 
Регистрация: 10.08.2004
Адрес: Завис в конторе
Пол: Male
Сообщения: 180

GOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царствеGOre01 Луч света в тёмном царстве
Как-то препод просил выводить числа с плавающе точкой в двоичное представление.
Код:
void PrintHEXView(float f);		// функция печатает 16-тиричное представление числа
void PrintBINView(float f);		// функция печатает двоичное представление числа

int main(int argc, char* argv[])
{
	float f = 12.140625;
	PrintHEXView(f);
	printf("\n");
	
	PrintBINView(f);
	printf("\n");
	
	return 0;
}
/////////////////////////////////////////////


void PrintHEXView(float f)
{
	void *b = (BYTE*)&f;
	int i = sizeof(f)-1;
	printf("0x");
	for (; i >= 0; i--)
	{
		if (*((BYTE*)b+i) == 0)
			printf("00");
		else
			printf("%X", *((BYTE*)b+i));
	}
}
/////////////////////////////////////////////
char *table[16] = 
{
	"0000",
	"0001",
	"0010",
	"0011",
	"0100",
	"0101",
	"0110",
	"0111",
	"1000",
	"1001",
	"1010",
	"1011",
	"1100",
	"1101",
	"1110",
	"1111"
};

void PrintBINView(float f)
{
	void *b = (BYTE*)&f;
	int i = sizeof(f)-1;
	BYTE bit;
	
	for (; i >= 0; i--)
	{
		bit = *((BYTE*)b+i);
		printf("%s%s", table[bit>>4], table[bit&0xf]);
	}
	printf("b");
}
Только одного не понимаю, одно дело выводить из на печать, и другое дело переводить, они и так в двоичном (шестнадцатиричном) виде в памяти представлены, зачем переводить?
__________________
Не нервируйте меня. Мне скоро негде будет прятать трупы!
GOre01 вне форума