Program w C reprezentacja zmiennoprzecinkowa

0

Mam do napisania taki program:
Napisz program wyznaczający najmniejsze liczby dodatnie, która są
reprezentowane w arytmetykach zmiennoprzecinkowych o pojedynczej i podwójnej
precyzji.

No to costam skubnelam:
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
#include <math.h>
/* Makra potrzebne do zdefiniowania modelu reprezentacji zmiennoprzecinkowej */

#FLT_RADIX 2 // To makro określa podstawę wykładnika
#FLT_MANT_DIG 1 /* Makra: #FLT_MANT_DIG oraz #DBL_MANT_DIG określają liczbę cyfr podstawy uzywanych do reprezentacji ulamka (inaczej: mantysy)/
#DBL_MANT_DIG 2
#define S(x , y) ((+1
x , +1*y)

int main()
{
char S = +1*=x, +1*=y;
int c;
int f_k;
int b;
int p;
return 0;
}

Ale nwm co zrobic z tymi makrami globalnymi(duzo o makrach nie wiem) i nie wiem jak zapisac to makro znak.
Piszac ten program chce opisac reprezentacje przedstawiona wzorem w linku: https://imgur.com/a/9lUwxrD

0

sama robilam, nie szukalam nigdzie rozwiazania

1

Nie wiem o jakie makra chodzi, ale, dla przykładu dla double będzie, bit znaku na zero (-1)^0,52 bity mantysy, poza pierwszym, który musi wynosić jeden z kodowania, wyzerowane(1,0000000000000000000000000000000000000000000000000000) i z kodowania - najmniejszy możliwy wykładnik, to -1022 (1 - 1023), co daje:
(-1)^0 * 1,0000000000000000000000000000000000000000000000000000 * 2^-1022 = 2^-1022.

#include <float.h>
int main(){
	double min_double = pow(2, -1022);
	int dgts = DECIMAL_DIG;
	printf("%.*e\n", dgts, min_double);// ->
	//-> 2.225073858507201383090e-308
	
	printf("\n");
	return 0;
}

Tak samo dla float tylko inne bity.

0

chodzilo mi o makra dla funkcji w linku reprezentujace mantyse, podstawe,wykladnik itd. chcialam to zrobic malo pomyslowym sposobem(wprost z definicji) ale nie udalo mi sie:( ale dzieki ze pomogles:)

0

dla float zakres bedzie 2razy mniejszy prawda?

0

Nie, nie , nie, będzie to wielokrotnie, bilioby bilionów, razy większa liczba (ok. 1.17e-38) :) - każdy bit mniej mantysy to dwa razy mniejsza dokładność, a wykładnika? Ho, ho :)

0

czyli jaki zakres? jak nie pow(1, -511)

0

Przecież to jest w standardzie i na wikipedii, najmniejszy wykładnik dla float to -126, czyli mamy: 2^-126 = 1.175e-38.
https://en.wikipedia.org/wiki/Single-precision_floating-point_format

0

ok mam:))))

0

dlatego nie lubie gotowcow bo potem mi sie jest trudno domyslic o co w nich chodzi:)))))

1 użytkowników online, w tym zalogowanych: 0, gości: 1