doc.
Notatka na temat przesuwania bitów, zawiera takie informacje, jak: przesuwanie arytmetyczne, przesuwanie cykliczne, przesuwanie logiczne.
notatka pozwoli na przygotowanie się do zajęć i egzaminu z opisanego zagadnienia.
Weźmy sobie taki ciąg bitów...
010111001
w szeregowym przesuwaniu przesyłającym to nawet nie ma co tłumaczyć bo to przesuwa bit po bicie z rejestru przeznaczenia do źródłowego...
PRZESUWANIE LOGICZNE
W przesuwaniu logicznym wstawiane jest zero do skrajnej pozycji rejestru czyli jak przesuwasz w lewo to z prawej strony dojdzie zero i tak samo stanie się jak będziesz przesuwać w lewo to z prawej dojdzie zero..
zaprezentuje to na tych bitach...
LSHL (w lewo) 101110010
LSHR (w prawo) 001011100
PRZESUWANIE CYKLICZNE
W rejestrze zamieniają się bity ze skrajnych pozycji... bity przed zamiana 010111001
CIL 101110010
CIR 101011100
teraz jest dobrze...
po prostu jak przesuwa się cyklicznie w lewo to wypycha się bit z pierwszej pozycji i wstawia w wolne miejsce na ostatniej..
tak samo w prawo wypycha się bit z ostatniej pozycji u nas 1 i wstawia do pierwszej pozycji która jest wolna...
PRZESUWANIE ARYTMETYCZNE:
Arytmetyczne przesuwanie polega na tym ze jeśli przesuwasz w lewo to tak samo jakbyś mnożyła przez 2 a jak przesuwasz w prawo to jakbyś dzieliła przez 2...
przed zmiana 010111001
ASHL (w lewo) 001110010
tak na logikę to na początku powinno być 10111...
ale w przesuwaniu arytmetycznym z tego co pamiętam to NIE może zmienić się znak wiec 1 z początku się wyrzuca jako nadmiar...
ASHR (w prawo) 001011100
Uruchom sobie kalkulator windows'owy i przełącz go na naukowy...
Wpisz swoją liczne binarnie tak jak masz... mi wyszło ze twoje przykładowe bity 000110111 to na dziesiętny są równe 55.
W sumie w ASHL to ja nawet nie mnożę binarnie po prostu z lewej strony wywalam bit a z prawej wstawiam zero i to cala filozofia...
A teraz wykonaj w kalkulatorze takie działanie 55 * 2 i powinno wyjść Ci 110.
A teraz kliknij sobie w kalkulatorze na opcje 'BIN' i zamieni Ci to i na binarny... mi wyszło tak dla ASHL 001101110... tak jak mówiłem bez liczenia nawet wywalasz pierwszy bit i wstawiasz zero na koniec...
A teraz dzielenie....
Teraz przełącz kalkulator z powrotem na dziesiętny system i wykonaj działanie 55 / 2 = 27,5... ale my będziemy rozważać tylko całości wiec mamy 27...
Skasuj wynik z tą częścią ułamkową i wpisz sobie całości 27 i kliknij na 'BIN' i masz reprezentuje binarna...
Czyli ASHR 0000110011.... zasada tak jak w mnożeniu tylko ze przesuwamy w prawo i wywalamy bit z prawej strony a na miejsce, które się zrobiło z lewej strony wstawiamy zero...
Tak na marginesie to jest podobna zasada jak w logicznym przesuwaniu.... tylko ze tu może wyskoczyć nadmiar i w arytmetycznym dodatkowo znak liczby nie może się zmienić...
Nie jestem pewien czy w arytmetycznym ten nadmiar jest dobry, wiec polecam Ci dobieranie bitów takich, żeby na drugiej pozycji z lewej strony było zero... wtedy masz gwarancje ze nie wyskoczy Ci przypadek z nadmiarem...
... zobacz całą notatkę
Komentarze użytkowników (0)