Co to jest kod U2?
U2, czyli kod uzupełnień do dwóch, jest powszechnym sposobem zapisywania całkowitych liczb ze znakiem w stałej liczbie bitów. Najstarszy bit pełni rolę bitu znaku, ale nie można go traktować jak zwykłego znaku „minus” dopisanego przed liczbą.
W n-bitowym słowie połowa możliwych kombinacji reprezentuje liczby nieujemne, a połowa ujemne. Dla 8 bitów można zapisać wartości od −128 do 127. Wartość 10000000₂ oznacza −128, natomiast 01111111₂ oznacza 127.
Szerokość słowa jest niezbędna. Zapis U2 nie jest kompletny bez informacji, czy analizujemy np. 8, 16 czy 32 bity.
Do zwykłej zamiany BIN/OCT/DEC/HEX służy kalkulator systemów liczbowych. Ten kalkulator koncentruje się na zakresie, znaku, kodowaniu i przepełnieniu liczb ze znakiem.
Jak zakodować dodatnią liczbę w U2?
Dla liczby nieujemnej zapis U2 jest taki sam jak zwykły zapis binarny, o ile wartość mieści się w dodatnim zakresie wybranego słowa. Do lewej strony dopisuje się zera aż do osiągnięcia wymaganej liczby bitów.
Najstarszy bit wynosi 0, więc liczba jest nieujemna. Nie można jednak w 8-bitowym U2 zapisać dodatniej liczby 200, ponieważ maksymalna wartość to 127.
To ważna różnica względem 8-bitowej liczby bez znaku, która może przyjmować wartości od 0 do 255.
Kalkulator automatycznie sprawdza zakres przed utworzeniem kodu.
Jak zakodować liczbę ujemną w U2?
Najczęściej stosowana metoda szkolna składa się z trzech etapów. Najpierw zapisujesz wartość bezwzględną liczby binarnie na dokładnie tylu bitach, ile ma słowo. Następnie odwracasz wszystkie bity, a na końcu dodajesz 1.
Jeżeli wynik zaczyna się od 1, oznacza to liczbę ujemną w interpretacji U2. Sama jedynka z lewej nie mówi jednak, jaka jest wartość liczby — potrzebne są wszystkie bity i szerokość słowa.
Dla najbardziej ujemnej wartości, np. −128 w 8 bitach, kod wynosi 10000000₂.
Jak odczytać liczbę U2, gdy bit znaku wynosi 1?
Jeżeli najstarszy bit jest równy 0, odczytujesz liczbę tak jak zwykłą nieujemną liczbę binarną. Jeśli najstarszy bit wynosi 1, można zastosować metodę odwrotną: odwrócić wszystkie bity, dodać 1 i do otrzymanej wartości dopisać znak minus.
Można też obliczyć wartość szybciej: potraktować słowo jako liczbę bez znaku i odjąć 2n. Dla 11011011₂ w 8 bitach wartość bez znaku to 219, a 219 − 256 = −37.
Kalkulator pokazuje oba znaczenia: surową sekwencję bitów oraz wynik dziesiętny ze znakiem.
Zakres U2 – ile można zapisać na 4, 8, 16 i 32 bitach?
| Bity | Minimum | Maksimum | Liczba wartości |
|---|---|---|---|
| 4 | −8 | 7 | 16 |
| 8 | −128 | 127 | 256 |
| 16 | −32 768 | 32 767 | 65 536 |
| 32 | −2 147 483 648 | 2 147 483 647 | 4 294 967 296 |
Ujemna część zakresu ma o jedną wartość więcej niż dodatnia. Wynika to z tego, że zero zajmuje jeden kod, a w U2 nie ma osobnego „ujemnego zera”.
Dlatego dla n bitów minimum to −2n−1, a maksimum 2n−1−1.
Przepełnienie w dodawaniu U2 – kiedy wynik jest błędny?
Dodawanie bitów w U2 można wykonać tak samo jak zwykłe dodawanie binarne, ignorując przeniesienie wychodzące poza szerokość słowa. Problem pojawia się wtedy, gdy prawidłowy wynik matematyczny nie mieści się w dopuszczalnym zakresie.
Przepełnienie dla dodawania liczb ze znakiem występuje wtedy, gdy dodajemy dwie liczby o tym samym znaku, a wynik w ograniczonym słowie ma znak przeciwny.
Odczytanie 10001100 jako 8-bitowego U2 da −116. Nie jest to prawidłowa suma 90 + 50, tylko skutek przepełnienia.
Kalkulator pokazuje zarówno matematyczną sumę, surowy wynik n-bitowy, jak i informację o przepełnieniu.
Dla ucznia i studenta – jak rozwiązać zadanie z U2?
1. Zapisz liczbę bitów. Bez szerokości słowa nie da się jednoznacznie określić zakresu i poprawnie interpretować liczb ujemnych.
2. Oblicz zakres. Dla n bitów jest to od −2n−1 do 2n−1−1. Sprawdź, czy dana liczba w ogóle się mieści.
3. Dla liczby dodatniej zapisz zwykłą postać binarną i uzupełnij zerami z lewej strony.
4. Dla liczby ujemnej zapisz wartość bezwzględną, odwróć bity i dodaj 1.
5. Przy odczycie spójrz na najstarszy bit. 0 oznacza wartość nieujemną, 1 — ujemną.
6. Przy dodawaniu sprawdź przepełnienie. Sam fakt, że otrzymałeś n bitów, nie oznacza jeszcze, że matematyczna suma mieści się w zakresie U2.
Do ćwiczenia zwykłego dodawania, odejmowania i mnożenia bitów użyj kalkulatora arytmetyki binarnej. U2 dotyczy dodatkowo interpretacji znaku i ograniczonego zakresu.
Pozostałe narzędzia znajdziesz w kategorii Informatyka.
Najczęstsze błędy w kodzie U2
- Brak liczby bitów. Sam zapis „1011 w U2” jest niepełny, jeśli nie znamy szerokości słowa.
- Traktowanie najstarszego bitu jak znaku minus. W U2 wszystkie bity razem tworzą wartość.
- Odwrócenie bitów bez dodania 1. To nie daje U2 liczby ujemnej.
- Zakodowanie wartości poza zakresem. Dodatnie 128 nie mieści się w 8-bitowym U2.
- Mylenie U2 z liczbą bez znaku. 11111111₂ to 255 bez znaku, ale −1 w 8-bitowym U2.
- Ignorowanie przepełnienia. Surowe n bitów może reprezentować inną wartość niż matematyczna suma.
- Mylenie zwykłego minusa z U2. Zapis −101₂ nie jest tym samym co konkretne n-bitowe słowo U2.
Zadania do samodzielnego rozwiązania
Spróbuj policzyć samodzielnie, a następnie kliknij „Pokaż wynik”.
Zadanie 1 – kodowanie liczby ujemnej
Zapisz −18 w 8-bitowym kodzie U2.
18 = 00010010.
Odwrócenie: 11101101.
Dodaj 1: 11101110.
−18 = 11101110₂ w 8-bitowym U2.
Zadanie 2 – odczyt U2
Jaką wartość dziesiętną ma 11110110 w 8-bitowym U2?
Bit znaku = 1, więc liczba jest ujemna.
Odwrócenie: 00001001. Dodaj 1: 00001010 = 10.
Wynik: −10.
Zadanie 3 – przepełnienie
Czy suma 70 + 70 mieści się w 8-bitowym U2?
Zakres 8-bitowego U2: −128...127.
70 + 70 = 140.
Nie. Występuje przepełnienie, bo 140 > 127.
Dlaczego U2 nie ma „ujemnego zera”?
W kodzie znak-moduł można byłoby utworzyć osobne +0 i −0. W U2 istnieje tylko jeden zapis zera: wszystkie bity równe 0.
Dzięki temu jedna dodatkowa kombinacja bitów może reprezentować najbardziej ujemną liczbę, np. −128 w 8 bitach.
Powiązane narzędzia informatyczne
Do zwykłych działań `+`, `−` i `×` na liczbach BIN służy kalkulator arytmetyki binarnej.
Do zamiany pomiędzy BIN, OCT, DEC i HEX użyj kalkulatora systemów liczbowych.
Pozostałe narzędzia znajdziesz w kategorii Informatyka.
Wskazówka od KalkulatorXXL
W zadaniu o U2 jako pierwszą informację zapisz liczbę bitów. Dopiero potem licz zakres, koduj liczbę albo analizuj przepełnienie.
Przy liczbie ujemnej najprostsza kontrola szkolna brzmi: wartość bezwzględna → zapis binarny na n bitach → odwrócenie → +1.