Ahoj, muzute mi poradit nejakou funkci na prevod z floatu na unsigned int? diky
administrator: přesunuto z "Ostatní"
Ahoj, muzute mi poradit nejakou funkci na prevod z floatu na unsigned int? diky
administrator: přesunuto z "Ostatní"
Kolik jasnovidců sem asi tak chodí, co myslíš…? Nemůžeme.
Napiš v čem to potřebuješ - jaký prog. jazyk a jaký procesor.
omlouvam se, potreboval jsem prevest 0 az 1 na 0x0000 az 0xFFFF a vyresil jsem to nasledovne
output_data = (unsigned int) ((pom + 1) * 32767.5);
To by ma zaujimal vypis tohoto z asembleru
On ten převod v assembleru není až takový složitý. Float je uložený ve formátu 23 bitů mantisa + 8 bitů exponent + 1 bit znaménko. Mantisa je jakoby číslo 1.0 až 1.99999 s odstraněným nejvyšším bitem (tedy bez té jedničky). Exponent je mocnina 2 (+ offset 127). Takže pro převod na celé číslo stačí vzít 23 bitů mantisy jako celé číslo, přidat “1” jako 24. bit (pak to bude jakoby mantisa * 2^23) a jen vyrotovat doprava o příslušný počet bitů podle hodnoty exponentu (tedy o zhruba 23-(exp-127)).