[OT]C CO tim chtel basnik rici?
František Burian
BuFran na seznam.cz
Středa Prosinec 31 19:07:14 CET 2014
"přičemž se doplňuje nulami" je právě ta chyba. Pokud 0xFFFFFFFF je int pak
je signed a posunuje se znamenko takže by měl být výsledek -1. pokud bude
uint měl by být 0 v obou případech.
---------- Původní zpráva ----------
Od: Pavel Hudeček <edizon na seznam.cz>
Komu: HW-news <hw-list na list.hw.cz>
Datum: 31. 12. 2014 18:45:59
Předmět: Re: [OT]C CO tim chtel basnik rici?
"To je nějaký divný. Zadání je jasné:
Vzít 32b int plný jedniček a 32x posunout, přičemž se doplňuje nulami.
- Proč by se to mělo přeložit jinak, než pro posun o 1, 2, 17, nebo třeba 35
bitů?
- Proč by mělo (není-li chyba v překladači) vycházet něco jiného než 0?
PH
Od: Jan Waclawek
To zavisi od velkosti int. Ak je viac ako 32 bitov, oba pripady su
ekvivalentne, ak menej alebo rovne, obidva su nedefinovane, takze prekladac
ma plne pravo vygenerovat lubovolny kod, ktory moze trebars aj spadnut. Rad
by som, ale nemam teraz moznost citovat z normy.
Akurat ze gcc sa bude v prvom pripade snazit vygenerovat nejaky kod, co moze
dopadnut vselijako v zavoslosti od konkretneho procesora; v druhom tam asi
da v ramci jednoduchosti asi 0xFFFFFFFF, t.j. akoby shift ani nenastal; ale
moze to byt lubovolne inak.
>>>
Na C alebo skor gcc mam tazke srdce koli inym "vlastnostiam"
Len tak schvalne aky vysledok bude podla vas v tychto prikladoch:
uint32_t addr_rem, mask;
addr_rem = 32;
mask = 0xFFFFFFFF >> addr_rem;
A aky v pripade:
mask = 0xFFFFFFFF >> 32;
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list"
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20141231/4c48dbdf/attachment.html>
Další informace o konferenci Hw-list