GRY-Online.pl --> Archiwum Forum

Teoria i inżynieria systemów liczbowych.

04.06.2010
16:58
[1]

Flet [ Fletomen ]

Teoria i inżynieria systemów liczbowych.

Witam

Mam pytanie czy odejmując lub dodając do siebie liczby ujemne w systemie ujemnych stosujemy kod uzupełnień tzw. U1 ?

Tzn. mam na myśli to, że dodając np 4+3 w binarnym mamy zapis o taki - czyli (100)*+(011)
*na 3 bitach.

Natomiast dodając 3+(-4) mamy (011)+(100) i teraz trzeba zastosować tzw. negacje do liczby 4 a więc ostateczny zapis to będzie (0.011)+(1.011) tak ? I to jest właśnie ten kod U1 ? Wynik tego dodawania ? Czyli 1.110? Pewnie motam strasznie ale jakoś nie było mnie na paru zajęciach z tychże działań...

Teraz jak tak jeszcze patrze to Jak wynik wychodzi ze znakiem 1 z przodu to jeszcze na koniec wyniku trzeba zrobić negacje tak ? Czyli ostateczny wynik 3+(-4) to będzie 1.001 ?

04.06.2010
17:28
[2]

Kogee [ Kogi ]

Prawdę mówiąc nie jestem pewien, czy dobrze pamiętam arytmetykę uzupełnień, ale spróbuję pomóc.

Jeżeli chcesz dodać liczbę ujemną to faktycznie musisz skonwertować ją do kodu uzupełnień (dla binarnych U1 lub U2).
U1 tworzysz z NKB w ten sposób, że najstarszy bit 8-bitowego słowa jest bitem znaku
1 - liczba ujemna
0 - liczba dodatnia
Następnie uzupełniasz faktyczną liczbę do młodszych 7 bitów, wpisując zera w bitach na lewo od faktycznej liczby (jeżeli była krótsza, niż 7 bitów).
Jeżeli liczba była ujemna, to wszystkie 7 bitów liczby negujesz.
Bit znaku też bierze udział w dodawaniu.
Jeżeli po sumowaniu obu liczb wystąpi przeniesienie na najstarszym bicie (znaku), to dodajesz jedynkę to końcowego wyniku.
Zakres liczb, które możesz w tym kodzie zapisać to -127 --- 127 (-2^7+1 --- 2^7+1) [dla formatu 8-bitowego]
Są dwie reprezentacje zera (00000000 i 11111111).

Na przykładzie mamy 4 i -3
4_(dziesietnie) = 100_(dwójkowo) =
00000100_(u1)
-3_(dziesiętnie) = 11111100_(u1)

00000100
11111100 +
--------------
(przeniesienie z najstarszego bitu)
00000001 +
--------------
00000001 (u1) = 1


Jak masz jeszcze jakieś pytania, to wal śmiało. :)

05.06.2010
12:45
[3]

Flet [ Fletomen ]

No ok ale my na zajęciach wyniki dla systemu u1 zapisywalismy na trzech bitach, a dla u2 w zakresie liczb 4 bitowych.

To teraz mam pytanie jak przeliczać liczby z systemu U1 na U2... można to jakoś wykonać?

Przykładowo jest właśnie to 3+(-4) wynik w 3 bitowym kodzie U1 wynosi 1.001 i teraz jakby było polecenie, żeby ten wynik zapisać w 4 bitowym kodzie u2 to jak to zrobić ?

05.06.2010
13:50
[4]

Kogee [ Kogi ]

Jeżeli bawicie się takimi customowymi rozmiarami słów, to zasada pozostaje taka sama.
Najstarszy bit to bit znaku, reszta to liczba, zanegowana jeśli ujemna.

Kod U2 uzyskujesz przez dodanie jedynki do liczby w formacie U1, ale tylko jeżeli była ujemna.

Rozmiaru słowa nie można zmieniać w locie (np. przy konwersji z U1 do U2), jeżeli była mowa o operowaniu w kodzie 3 bitowym, to stoisz przy formacie 3 bitowym przez wszystkie konwersje lub wykonujesz je od nowa dla słowa 4bitowego. Dodatkowo nie rozumiem, co oznacza ta kropka w 1.001, bo -4 wybiega poza zakres reprezentacji liczb w formacie U1 3-bitowym.


Dla formatu 4 bitowego działanie 3+(-4) w u2 wygląda tak:
+3= 0011(u2)
-4= 1011(u1) = 1100 (u2)
...................^dodanie jedynki

1100
0011+
-------
1111 (u2) = 1110 (u1) = -[0001] (nkb)
.............^odjecie jedynki



Dalej drążąc temat są jeszcze flagi przepełnienia i przeniesienia, które ostrzegają przy przekroczeniu zakresu. Jeżeli chcesz, to daj maila, a ci wyślę, naprawdę świetne .pdfy na ten i pokrewne tematy. Masz tam też wytłumaczone dodawanie, odejmowanie, mnożenie i dzielenie liczb w najpopularniejszych formatach komputerowych.

05.06.2010
14:04
[5]

Flet [ Fletomen ]

Kogee -> No tak tej kropki nie powinno być, ćwiczeniowac (tak mi sie zdaję) w ten sposób tłumaczył, ze liczba w dwójkowym składa się z trzech bitów czyli 4 w (2) to 100 a (-4) w (u1) to 1011 - czyli masz racje 4 bity. Kropkę stawiał chyba przez to, zeby było zrozumiałe, ze te 1 i 0 przed właściwą liczną w dwójkowym oznaczją ten znak (+) lub (-).

Jeśli możesz to byłbym Ci naprawdę wdzięczny :) fletomen małpa gmail com

05.06.2010
14:28
smile
[6]

Kogee [ Kogi ]

Poszło, miłego męczenia bitów.

© 2000-2024 GRY-OnLine S.A.