Podsumowanie kluczowych zagadnień
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.
Dane mogą być traktowane jako instrukcje programu, a instrukcje jako dane.
Głównym elementem komputera jest procesor (CPU – Central Processing Unit), który jest pojedynczym układem scalonym, zawierającym miliardy tranzystorów.
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).
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.
Rys. 2. Reprezentacja informacji w komputerze w postaci impulsów elektrycznych.
Komputer posługuje się systemem binarnym (dwójkowym), który ma do dyspozycji dwie cyfry: 0 i 1.
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.
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).
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.
Przykład tabeli do wyznaczania rozwinięcia dwójkowego liczby 1476.
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:
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
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).
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.