Strona 1 z 1

konwersja typów

: wt 02 sie 2005, 12:35
autor: dawid
Witam wszystkich

Mam mały problem. Mmam dwie zmienne
FLOAT zmienna1;
BYTE zmienna2;

i chce zrobić konwersje zmienna=(BYTE)zmienna1;

to które bity mi wezmie ze zmiennej1 i wstawi do zmiennej2.
np. jezeli mam FLOAT zmienna1=3421.2323 lub zmienna1= 65653421.2323; to co odpowiednio zostanie?

: śr 03 sie 2005, 3:32
autor: shg
To zrób i zobacz, program pisze się minutę :P

A tak poza tym, to jest problem, bo chyba zależy od kompilatora i FPU.
O ile dobrze pamiętam, to standard ANSI C nie definiuje sposobu wykonywania konwersji z typu zmiennoprzecinkowego na całkowity jeżeli wartość zmiennoprzecinkowa nie mieści się w całkowitej.
Zdaje się, że w ISO C99 są zalecenia, żeby przypisać zmiennej największą wartość, jaką może przechować.

Jeżeli nie jest sprawdzane przepełnienie, to w wyniku dostaniesz najmniej znaczące bity, czyli (3421 & 0xff)
jeżeli jest kontrola przepełnienia, to dostaniesz 255, czyli maksimum.

A żeby uniknąć kłopotów - nieśmiertelne, cholernie przydatne i niedoceniane makro assert()

Jeżeli zależy Ci konkretnie na wybranych bitach, to rzutuj na int (LONG?), a potem na BYTE.

Re: konwersja typów

: pt 17 paź 2014, 15:10
autor: hassan123
witam
mam pytanie
mam dwie tablice
BYTE tab1
UINT tab2

jak można zrobić zeby w tab1 znalazly sie wartosci z tab2 ale tak zeby w tab1[0] znalazlo sie 8 mniej znaczacych bitow z tab2[0], a w tab1[1] 8 bardziej znaczacych bitow z tab2[0] i tak przez cala dlugosc tablicy tab2


_____________
http://www.vmware.com/
http://www.pass4-sure.net/220-801-dumps.html
http://en.wikipedia.org/wiki/Arkansas_T ... ark_campus
http://www.caltech.edu/
https://www.facebook.com/Moontextile

Re: konwersja typów

: pt 17 paź 2014, 22:43
autor: sp9ttz
Spróbuj użyć czegoś takiego jak unie.
Przykład:
union Nazwa {
typ1 nazwa1;
typ2 nazwa2;
/* ... */
};
Jak do jednej zmiennej przypiszesz wartość to w drugiej będzie uwzględniając zmianę typu.