Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.01.2018, 12:30   #1
NoRestForTheWicked
Новичок
Джуниор
 
Регистрация: 02.01.2018
Сообщений: 1
По умолчанию Перевод вещественных чисел в двоичную систему счисления - C (Си)

Требуется переменные базового типа float необходимо разбить на отдельные структурные единицы:
-Знак
-Характеристика
-мантисса

Представить целую часть числа и дробную часть числа в десятичном виде без потери точности для того, чтобы можно было оценить точность представления чисел в компьютере.

Написал следующий код:
Код:
#include"stdafx.h"
#include <stdio.h>  
#include <conio.h>  
#include <math.h>  
#include <locale.h>


void integer(int x1) // перевод целочисленного типа данных в бинарную систему
{
	setlocale(LC_ALL, "Russian");
	int i, b;
	long c = 0;
	for (i = 0; x1 > 0; i++)
	{
		b = x1 % 2;
		x1 = (x1 - b) / 2;
		c += b * pow(10, i);
	}

	printf("\nДвоичное число: %d", c);
}

float real(void) // перевод дробной части числа
{
		setlocale(LC_ALL, "Russian");
			float x2; // первоначальное дробное число

			printf("Введите вещественное число 0<x<1: \n");
			scanf_s("%f", &x2);
			printf("Двоичное число: 0.");
			for (int i = 0; i < 24; i++)
			{
				x2 *= 2;
				int t = x2; // здесь хранится целая часть x2
				printf("%d", t);
				x2 = x2 - t;
				if (x2 <= 1e-8) // количество чисел после запятой
					break;
			}
			printf("\n");
		return 0;
}

int main()
{
	setlocale(LC_ALL, "Russian");
	int a;
	printf("Введите целое число:");
	scanf_s("%d", &a);
	integer(a);
	_getch();
	printf("\n");
	real();
	_getch();
}
Но он актуален только для положительных чисел меньше единицы (нужно реализовать для любых вещественных).
Остается вопрос в разбиении на знак, характеристику и мантиссу, а также в обратном переводе в десятичную систему счисления без потери точности.
NoRestForTheWicked вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод в двоичную систему счисления _Лето_ Общие вопросы C/C++ 4 24.11.2013 12:45
Перевод из десятеричной в двоичную систему счисления idShura Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 13.06.2012 19:39
Перевод отрицательных чисел в двоичную систему ioda1986 Помощь студентам 1 24.02.2010 00:55