[OT]C CO tim chtel basnik rici?

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Středa Prosinec 31 19:43:01 CET 2014


Jestli nebude na vine nejaka option prekladace, ze se provadi implicitne 
posun aritmeeticky nebo logicky...
Ten muj pokus dal 0 v obou pripadech a int je 32b - cili evidentne 
provadi posun logicky.
Kazdopadne tyhle chytaky asi zaslouzi v C-cku nebyt liny napsat 
0xFFFFFFFFU a je to jasne.

Dne 31. 12. 2014 v 19:07 František Burian napsal(a):
> "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
>
>
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com
------------- další část ---------------
HTML příloha byla odstraněna...
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20141231/9b04f9eb/attachment.html>


Další informace o konferenci Hw-list