INF.02 · pytanie 304
W jednostce ALU do akumulatora została wpisana liczba dziesiętna 500. Jaka jest jej binarna reprezentacja?
- A111011000
- B111110100Poprawna
- C110110000
- 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.