Egzamin zawodowyPortal części pisemnej

INF.02 · pytanie 304

W jednostce ALU do akumulatora została wpisana liczba dziesiętna 500. Jaka jest jej binarna reprezentacja?

  1. A111011000
  2. B111110100Poprawna
  3. C110110000
  4. D111111101

Wyjaśnienie

Liczba 500₁₀ ma reprezentację binarną 111110100₂, ponieważ rozkłada się na sumę potęg dwójki: 500 = 256 + 128 + 64 + 32 + 16 + 4, czyli 2⁸ + 2⁷ + 2⁶ + 2⁵ + 2⁴ + 2². Dla pozycji od 2⁸ do 2⁰ dostajemy więc bity: 1 1 1 1 1 0 1 0 0. Po złączeniu wychodzi dokładnie 111110100. W praktyce tak właśnie myśli procesor, ALU i rejestry: dane są przechowywane jako ciągi bitów, a ich znaczenie zależy od przyjętej interpretacji, np. liczba bez znaku, liczba ze znakiem w kodzie uzupełnień do dwóch albo fragment instrukcji maszynowej. Moim zdaniem warto też pamiętać o szerokości rejestru. Sama postać 111110100 ma 9 bitów, więc jako liczba bez znaku nie zmieści się w 8-bitowym akumulatorze, bo tam maksimum to 255. W rejestrze 16-bitowym ta sama wartość byłaby zapisana z zerami z przodu jako 0000000111110100. To jest dobra praktyka branżowa: zawsze określać podstawę systemu liczbowego oraz liczbę bitów, bo bez tego łatwo o pomyłkę przy diagnostyce, programowaniu niskopoziomowym czy analizie zawartości pamięci.