KWALIFIKACJA INF2 + INF3 - CZERWIEC 2009

PYTANIE NR 24.
Jaka liczba dziesiętna jest reprezentowana przez bajt o wartości binarnej 11111111 w 8-bitowym kodzie znak-moduł 1 (sign-magnitude)?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W kodzie znak-moduł (sign-magnitude) bit MSB określa znak (1 = ujemna), a pozostałe 7 bitów to wartość bezwzględna.
Dla 11111111: znak = 1, moduł = 1111111₂ = 127₁₀, więc liczba ma wartość -127. W tym kodzie nie ma -128, bo zakres to -127…+127.

Pełne wyjaśnienie:

W 8-bitowym kodzie znak-moduł (sign-magnitude) zapis liczby dzieli się na dwie części:

  • MSB (najbardziej znaczący bit) jest bitem znaku: 0 oznacza liczbę dodatnią, 1 oznacza liczbę ujemną.
  • Pozostałe 7 bitów to moduł, czyli wartość bezwzględna liczby w zapisie binarnym.

Dla bajtu 11111111:

  • MSB = 1, więc liczba jest ujemna.
  • Moduł tworzą bity 6–0: 1111111₂, co w systemie dziesiętnym daje 127.

Zatem reprezentowana liczba to -127.

Dlaczego pozostałe odpowiedzi są błędne?

  • -255 i -128 wynikają zwykle z mylenia sign-magnitude z innymi kodami lub z prób traktowania całych 8 bitów jako jednej liczby bez rozdzielenia znaku i modułu. W sign-magnitude moduł ma tylko 7 bitów, więc maksymalna wartość bezwzględna to 127.
  • 127 byłoby poprawne, gdyby MSB = 0 (czyli dla 01111111). Tutaj MSB = 1, więc znak jest ujemny.

Ważna cecha tego kodu: istnieją dwie reprezentacje zera (+0: 00000000 i -0: 10000000), dlatego zakres wartości w 8 bitach to -127 do +127, a nie -128 do +127 jak w kodzie U2.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Kod znak-moduł to sposób zapisu liczb całkowitych ze znakiem, gdzie najstarszy bit (MSB) oznacza znak (0 dodatni, 1 ujemny), a pozostałe bity tworzą moduł, czyli wartość bezwzględną. To jeden z klasycznych kodów obok U1 i U2.
Najpierw sprawdź MSB: tutaj to 1, więc liczba jest ujemna. Następnie odczytaj pozostałe 7 bitów jako moduł: 1111111₂ = 127. Wynik to -127. Kluczowe jest rozdzielenie znaku i modułu.
W sign-magnitude moduł ma tylko 7 bitów, więc maksymalna wartość bezwzględna to 127. Dodatkowo istnieją dwa zera (+0 i -0), co "zabiera" jedną kombinację. Dlatego zakres 8-bitowy to -127…+127, bez -128.
Tak. Ponieważ znak jest osobnym bitem, można mieć +0 jako 00000000 oraz -0 jako 10000000. To jedna z wad sign-magnitude: dwie reprezentacje zera komplikują porównania i działania arytmetyczne.
W sign-magnitude MSB to wyłącznie znak, a reszta to moduł. W U2 cały wzorzec bitów koduje wartość w sposób ułatwiający arytmetykę, a zakres 8-bitowy to zwykle -128…+127. U2 ma jedno zero, a sign-magnitude ma dwa.
127 w sign-magnitude odpowiadałoby zapisowi 01111111, gdzie MSB=0 (znak dodatni). Dla 11111111 MSB=1, więc znak jest ujemny, a moduł to 127. Stąd wynik to -127, a nie +127.
Tak, ale nie w sign-magnitude. W kodzie U2 (uzupełnienie do dwóch) 11111111 zwykle oznacza -1. W sign-magnitude ten sam bajt ma MSB=1 i moduł=127, więc oznacza -127. Trzeba zawsze znać użyty kod.
Najczęściej myli się zakres z U2 (szuka się -128), traktuje 11111111 jak liczbę bez znaku (255) albo zapomina, że tylko MSB to znak. Pomaga schemat: znak = MSB, moduł = reszta bitów, dopiero potem konwersja modułu na dziesiętny.
Obecnie rzadko w typowych CPU (dominuje U2), ale sign-magnitude pojawia się w kontekstach dydaktycznych, w analizie historycznych architektur oraz czasem w wyspecjalizowanych systemach/algorytmach, gdzie znak i wartość są rozdzielane logicznie.
Stosuj stałą procedurę: 1) odczytaj MSB jako znak, 2) przepisz pozostałe bity jako moduł, 3) zamień moduł na dziesiętny, 4) dołącz znak. Nie mieszaj z U1/U2, dopóki nie upewnisz się, jaki kod podano w treści.
info

To pytanie poprawnie rozwiązuje 42% zdających egzamin. trudne

W praktyce zawodowej kluczowe jest to, że w kodzie znak-moduł (sign-magnitude) bit MSB określa znak (1 = ujemna), a pozostałe 7 bitów to wartość bezwzględna.Dla 11111111: znak = 1, moduł = 1111111₂ = 127₁₀, więc liczba ma wartość -127.

Źródła:

  • Wikipedia: Sign-magnitude representation — https://en.wikipedia.org/wiki/Signed_number_representations#Sign%E2%80%93magnitude_representation (dostęp: 2026-02-18)
  • Wikipedia (PL): Kod znak-moduł — https://pl.wikipedia.org/wiki/Kod_znak-modu%C5%82 (dostęp: 2026-02-18)
  • Wikibooks: Computer Organization/Number Representation (signed integers) — https://en.wikibooks.org/wiki/Computer_Organization/Number_Representation (dostęp: 2026-02-18)

Materiały:

  • Podręczniki z architektury komputerów i reprezentacji danych (rozdziały o liczbach ze znakiem)
  • Notatki dydaktyczne z przedmiotu "Podstawy informatyki / systemy liczbowe"
  • Ćwiczenia: porównanie sign-magnitude, U1 i U2 dla tych samych bitów

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego