Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| informatyka:podstawy-dzialania-komputera:ujemne_liczby_dwojkowe [2024/05/08 16:05] – kawcix | informatyka:podstawy-dzialania-komputera:ujemne_liczby_dwojkowe [2024/05/08 18:19] (current) – kawcix | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== 9 Zapisy Liczby dwójkowej ze znakiem ====== | ====== 9 Zapisy Liczby dwójkowej ze znakiem ====== | ||
| + | |||
| + | Istnieją następujące sposoby: | ||
| + | |||
| + | * Znak moduł - ZM | ||
| + | * Uzupełnienie do 1 | ||
| + | * Uzupełnienie do 2 | ||
| + | |||
| + | Najlepszy i najczęściej używany jest uzupełnienie do 2 (U2) | ||
| + | |||
| + | ===== Znak moduł - ZM ===== | ||
| + | |||
| + | Obok najstarszego bitu liczby (pierwszy od lewej) dodaję się bit znaku. Wynosi on 0 dla liczby dodatniej i 1 dla liczby ujemnej. Pozostałe bity reprezentują wartość bezwzględną liczby. | ||
| + | |||
| + | np liczba 12 to w systemie dwójkowym 1100 (0*1 + 0*2 + 1*4 + 1*8) ([[informatyka: | ||
| + | |||
| + | liczba ta z znakiem plus w systemie znak moduł, zakładając że reprezentujemy ją w 8 - bitowej zmiennej wygląda tak: | ||
| + | |||
| + | 0.0001100 | ||
| + | |||
| + | liczba ta z znakiem minus będzie miała 1 na początku: | ||
| + | |||
| + | 1.0001100 | ||
| + | |||
| + | System ten nie jest najczęściej używany, ponieważ ma wady. Mamy w nim dwa zera 0 i -0. | ||
| + | |||
| + | Kolejnym kłopotem jest implementacja operacji arytmetycznych i innych rzeczy... | ||
| + | |||
| + | ===== Uzupełnienie do 1 ===== | ||
| + | |||
| + | |||
| + | Liczby dodatnie zapisujemy tak jak w systemie znak moduł, ale gdy liczba jest ujemna następuje odwrócenie wszystkich bitów liczby ( zamiania zer na jedynki, i jedynek na zera) | ||
| + | |||
| + | przykład: | ||
| + | |||
| + | liczba 12 = 1100 | ||
| + | |||
| + | +12 w systemie u1 - 0.0001100 | ||
| + | |||
| + | -12 w systemie u2 - 1.1110011 | ||
| + | |||
| + | ===== Uzupełnienie do 2 ===== | ||
| + | |||
| + | Liczby dodatnie zapisujemy tak samo jak w systemie znak moduł i u1. A kiedy liczba jest ujemna robimy uzupełnienie do 1 (odwracamy wszystkie bity liczby) i dodajemy liczbę jeden. | ||
| + | |||
| + | przykład: | ||
| + | |||
| + | liczba 12 = 1100 | ||
| + | |||
| + | +12 w systemie uzupełnienia do 2 : | ||
| + | |||
| + | 0.0001100 | ||
| + | |||
| + | -12 w systemie uzupełnienia do 2 = 1.1110100 | ||
| + | |||
| + | |||
| + | {{: | ||
| + | |||
| + | ===== Dlaczego dodawanie w systemie uzupełnienia do 2 jest fajne? ===== | ||
| + | |||
| + | Dlatego, że będzie ono " | ||
| + | |||
| + | [[informatyka: | ||
| + | |||
| + | Na przykład. -2 + (-3) = -5 | ||
| + | |||
| + | -2 w systemie uzupełnienia do 2 to normalnie 14 | ||
| + | |||
| + | -3 to 13 | ||
| + | |||
| + | 14 + 13 to 27 | ||
| + | |||
| + | Sumator który zbudowaliśmy odrzuci bit " | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||