[elektro] PIC C32 shift right
I F
flaist at gmail.com
Thu Jan 17 12:41:25 CET 2013
Igy van sajnos!
Ezt írja az ANSI-C könyv:
"Egy előjel nélküli mennyiség jobbra léptetésekor a bal szélen
felszabaduló bitek mindig nullával töltődnek fel. Előjeles számok
jobbra léptetésekor a felszabaduló bitek az előjel bittel (aritmetikai
léptetés), ill. néhány számítógép esetén nullával töltődnek fel
(logikai léptetés)."
SZIGETI Szabolcs <szigiszabolcs at gmail.com> írta (2013. január 17. 9:40):
> Hali!
>
> Nem rossz, hanem a C szabvány szerint a jobb shift nem definiált pontosan.
> Lehet aritmetikai vagy logikai csak egy azon fordítón belül konzisztensen
> kell működnie. Általában persze logikusan működik, de (főleg ha a hardver
> olyan), akkor teljesen legális az előjeles számokat előjel nélkül shiftelni
> jobbra.
>
> Szabolcs
>
>
>
> 2013. január 17. 9:29 Info írta, <info at kiralyelektronika.hu>:
>
>> Szia!
>>
>> > 1980-ban még 8080-al kezdtem.
>> > Akkor még a C csak kiváltságosoknak jutott.
>> Ok, akkor nem ez a gond :)
>>
>> > Na de a bajom az volt, hogy C18 és C32 teljesen másképp működik a jobbra
>> > shiftelésnél előjeles változóval.
>> Akkor a gond az, hogy rossz a fordító.
>> Az humbug szerintem, hogy másképp is kell működnie, mivel nyelvi
>> alapon mint számot mindíg az előjelével kell kezelnie, unsignednél
>> ezért mindíg 0-nak kellene bejönnie.
>> Matek alapon a bittologatás osztás/szorzás, és ennek megfelelően kell
>> implementálnia a c compilernek. Szal az bug nem feature :)
>>
>>
>> -----------------------------------------
>> elektro[-flame|-etc]
>>
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list