chtel bych se zeptat, proc se pri aritmetickem bitovem posunu zachovava hodnota nejdulezitejsiho bitu. Napriklad pokud bychom meli ctyrbitove cislo, rekneme 1011 (tj. 11 desitkove), tak pri pouhem posunuti bitu doprava dostavame 0101 (tj. 5 desitkove), coz je spravny vysledek pro 11/2 celociselne. Naopak pokud nejvyssi bit zachovame, dostaneme 1101 (tj. 13 desitkove).
Tuto zalezitost nejak nemuzu pochopit, jinak vyborny clanek (i kdyz jsem oproti aktualnim dilum s cetbou trochu pozadu), diky Geralt
ano, pri aritmetickem posunu se hodnota nejvyssiho bitu zachovava a to z duvodu pouziti reprezentace cisel ve dvojkovem doplnku. Protoze (pokud bereme cisla ulozena na ctyrech bitech ve dvojkovem doplnku) 1011 neni 11 desitkove ale -5 desitkove a po aritmetickem posunu dostaneme vysledek 1101 coz je -3 desitkove a to lze povazovat za korektni vysledek deleni 2 (protoze nejnizsi bit se ztrati, tak neni rozdil mezi delencem -5 a -6).
Jazyky, ktere znaji rozdil mezi (signed int) a (unsigned int), treba C-cko, tak sice maji pouze jeden operator >>, ale ten se ve sve cinnosti bud preklada jako aritmeticky posun nebo bitovy/logicky posun. Jine jazyky, ktere tento rozdil neznaji (Java), musi zavadet novy operator >>>. V assembleru to same - pri pouzivani "zapornych cisel" se pouziva aritmeticky posun jinak bitovy.