Temat A1. Reprezentacja Danych w Komputerze

Podsumowanie kluczowych zagadnień

1. Logiczny model komputera

Od ponad 30 lat komputery osobiste ewoluują, ale ich podstawowe zasady działania, oparte na logicznym modelu Johna von Neumanna (sprzed ponad pół wieku), pozostają niezmienne.

Idea maszyny von Neumanna:

Dane mogą być traktowane jako instrukcje programu, a instrukcje jako dane.

Model von Neumanna

1.1. Na czym polega działanie procesora?

Głównym elementem komputera jest procesor (CPU – Central Processing Unit), który jest pojedynczym układem scalonym, zawierającym miliardy tranzystorów.

1.2. W jaki sposób procesor dodaje liczby?

Program rozpoczyna się od pobrania pierwszego rozkazu z pamięci operacyjnej. Procesor żąda dostępu do adresu, odczytuje zawartość komórki i umieszcza ją w rejestrze do wykonania.

Przykład dodawania liczb: Procesor przesyła wartości zmiennych (np. x=2, y=5) do rejestrów, wykonuje operację sumowania, a wynik zapisuje z powrotem w pamięci operacyjnej.

Pamięć operacyjna: Programy i dane są w niej przechowywane tylko na czas pracy komputera. Dane do trwałego zapisu trafiają do pamięci masowej (np. dysk, DVD, pendrive).

Pamięć operacyjną można wyobrazić sobie jako zbiór ponumerowanych komórek (adresów), których zawartość stanowią dane (wartości użytkownika, wyniki programu, rozkazy procesora, adresy innych komórek, wartości z urządzeń wejścia).

Procesor komunikuje się z pamięcią za pomocą szyn (magistral): adresowej (jednokierunkowej, do aktywowania komórek) i danych (dwukierunkowej, do przesyłania danych).

2. System dwójkowy (binarny)

W komputerze informacje są reprezentowane za pomocą impulsów elektrycznych (sygnał/brak sygnału), co odpowiada cyfrom 1 i 0. Każda z tych wartości to 1 bit informacji.

Kombinacja zer i jedynek pozwala na zapis dowolnej liczby. Osiem bitów stanowi 1 bajt informacji.

Reprezentacja informacji w komputerze w postaci impulsów elektrycznych

Rys. 2. Reprezentacja informacji w komputerze w postaci impulsów elektrycznych.

2.1. Wprowadzenie do systemów liczbowych

Komputer posługuje się systemem binarnym (dwójkowym), który ma do dyspozycji dwie cyfry: 0 i 1.

Dwa podstawowe rodzaje systemów liczbowych:

Podstawa systemu liczbowego (p) to liczba, do której potęg odnosi się wartość cyfr. W systemie dziesiętnym podstawą jest 10, w trójkowym 3, a w siedemnastkowym 17.

Do zapisu liczby w systemie pozycyjnym o podstawie p konieczny jest zbiór cyfr {0, 1, ..., p-1}.

Rozwinięcie liczby n-cyfrowej w systemie pozycyjnym o podstawie p:
(an-1an-2... a1a0)p = an-1·pn-1 + an-2·pn-2 + ... + a1·p1 + a0·p0.

2.2. Wartość liczby zapisanej w systemie dwójkowym

Aby obliczyć wartość dziesiętną liczby zapisanej w systemie dwójkowym, należy dokonać jej rozwinięcia według wzoru [1], przyjmując podstawę systemu równą 2.

Przykład: Liczba 111102

43210 (indeksy cyfr od prawej strony, zaczynając od 0)

111102 = 1·24 + 1·23 + 1·22 + 1·21 + 0·20 = 16 + 8 + 4 + 2 + 0 = 3010

Ponieważ 0·2n = 0, wystarczy zsumować tylko te potęgi dwójki, które znajdują się przy cyfrach 1.

W systemach komputerowych dane są zapisywane w grupach bitów:

W zapisie binarnym: MSB (Most Significant Bit) to najbardziej znaczący bit (skrajna lewa), a LSB (Least Significant Bit) to najmniej znaczący bit (skrajna prawa).

2.3. Wyznaczanie rozwinięcia dwójkowego liczby dziesiętnej

Aby wyznaczyć postać dwójkową liczby dziesiętnej, powtarzamy operację dzielenia z resztą tej liczby przez 2, zapisując wszystkie reszty z dzieleń, aż do uzyskania ilorazu równego zero. Rozwinięcie dwójkowe to zapisane kolejno reszty z dzieleń, począwszy od ostatniej.

Tabela przykładu rozwinięcia dwójkowego

Przykład tabeli do wyznaczania rozwinięcia dwójkowego liczby 1476.

3. System szesnastkowy

System dwójkowy jest niewygodny ze względu na długi zapis i łatwość pomyłek. W informatyce często stosuje się system szesnastkowy, który ma 16 cyfr:

3.1. Wartość liczby zapisanej w systemie szesnastkowym

Do obliczenia wartości dziesiętnej liczby szesnastkowej używamy wzoru [1], przyjmując za podstawę systemu liczbę 16.

Przykład: Liczba ABCD16

3210 (indeksy cyfr)

ABCD16 = A·163 + B·162 + C·161 + D·160

= 10·163 + 11·162 + 12·161 + 13·160

= 10·4096 + 11·256 + 12·16 + 13·1 = 40960 + 2816 + 192 + 13 = 4398110

3.2. Wyznaczanie rozwinięcia szesnastkowego liczby dziesiętnej

Algorytm jest podobny do zamiany na system dwójkowy, z tą różnicą, że dzielimy przez podstawę systemu szesnastkowego (16), aż do uzyskania ilorazu równego 0. Reszty z dzieleń, zapisane od ostatniej, tworzą rozwinięcie szesnastkowe (pamiętając o literach A-F dla wartości powyżej 9).

3.3. Zależność między systemem dwójkowym a szesnastkowym

System szesnastkowy jest użyteczny zamiast dwójkowego, ponieważ 24 = 16. Oznacza to, że jedna cyfra szesnastkowa odpowiada dokładnie czterem cyfrom dwójkowym.

Zamiana szesnastkowej na dwójkową: Należy sprawdzić wartość dziesiętną każdej cyfry szesnastkowej i zamienić ją na system dwójkowy, pamiętając o uzupełnieniu zerami z przodu, tak aby każda liczba dwójkowa miała dokładnie cztery cyfry. Otrzymane rozwinięcia dwójkowe zapisujemy w tej samej kolejności.

Przykład: 5C416

Zatem: 5C416 = 0101 1100 01002

Zamiana dwójkowej na szesnastkową: Liczbę dwójkową dzielimy na czterocyfrowe grupy, zaczynając od prawej strony. Następnie obliczamy wartość dziesiętną każdej grupy i wpisujemy odpowiadającą jej cyfrę szesnastkową.

Tabela 1. Wartości dziesiętne, szesnastkowe i dwójkowe liczb od 0 do 15.

Warto zapamiętać