1 of 55

Urządzenia Techniki Komputerowej

System binarny

Opracowanie: Mateusz Tobor

2 of 55

System binarny

Krótko i na temat

Czyli po prostu system zapisu liczb z podstawą liczby 2.

Prosty przykład:

​

11112 → (1×23 + 1×22 + 1×21 + 1×20)10 → (8+4+2+1)10 → 1510

10012 → (1×23 + 0×22 + 0×21 + 1×20)10 → (8+0+0+1)10 → 910

11102 → (1×23 + 1×22 + 1×21 + 0×20)10 → (8+4+2+0)10 → 1410

3 of 55

System binarny

Wprowadzenie

System binarny, zwany też systemem dwójkowym, jest systemem pozycyjnym, w którym używa się tylko dwóch cyfr: 0 i 1.

Każda cyfra w liczbie binarnej ma przypisaną wagę będącą potęgą liczby 2 – od najmniej znaczącej (2⁰) do najbardziej znaczącej.

4 of 55

System binarny

Zastosowanie

  • Komputery i elektronika cyfrowa – wszystkie dane w komputerze, w tym liczby, teksty i obrazy, są ostatecznie reprezentowane w postaci binarnej.
  • Programowanie niskopoziomowe – język maszynowy i niektóre operacje logiczne używają bezpośrednio wartości 0 i 1.
  • Transmisja danych – sygnały cyfrowe (np. w sieciach komputerowych) są przesyłane jako sekwencje zer i jedynek.
  • Matematyka i logika – w analizie cyfrowej i logice Boole’a używa się operacji na wartościach binarnych.

​

💡 Dlaczego tylko 0 i 1?

Elektronika cyfrowa opiera się na stanach włączony/wyłączony.

Dzięki temu system binarny jest prosty, niezawodny i łatwy do implementacji w sprzęcie komputerowym.

5 of 55

System binarny

Definicja

Prezentacja cyfry w dowolnym systemie liczbowym

A × 2B

A – wartość cyfry w tej pozycji

B – indeks pozycji cyfry licząc od prawej strony (najmniej znacząca = 0)

​

Przykład dla cyfry 110:

(1 × 100)10 = (1 × 20)2

​

​

6 of 55

System binarny

Definicja

Prezentacja liczby w dowolnym systemie liczbowym

N = An × 2n + An-1 × 2n-1 + ⋯ + A1 × 21 + A0 × 20

,gdzie:

​

N – liczba w systemie dziesiętnym

Ai – cyfra na pozycji iii, spełniająca 0≤Ai<Y0 \le A_i < Y0≤Ai​<Y

​

i = 0 … n – indeks pozycji, liczony od prawej strony (najmniej znacząca cyfra = 0),

i ∈ (0 ; +∞)

7 of 55

System binarny

Przekształcanie liczby z systemu dziesiątkowego

na system binarny

Przykład pierwszy: 1410

14 ÷ 2 = 7 reszta 0

7 ÷ 2 = 3 reszta 1

3 ÷ 2 = 1 reszta 1

1 ÷ 2 = 0 reszta 1

}

11102

→

8 of 55

System binarny

Przekształcanie liczby z systemu dziesiątkowego

na system binarny

Przykład drugi: 20110

201 ÷ 2 = 100 reszta 1

100 ÷ 2 = 50 reszta 0

50 ÷ 2 = 25 reszta 0

25 ÷ 2 = 12 reszta 1

12 ÷ 2 = 6 reszta 0

​

6 ÷ 2 = 3 reszta 0

3 ÷ 2 = 1 reszta 1

1 ÷ 2 = 0 reszta 1

​

110010012

9 of 55

System binarny

Przekształcanie liczby z systemu dziesiątkowego

na system binarny

Zadanie 1.

  1. 199
  2. 205
  3. 97
  4. 76
  5. 62
  6. 122
  7. 42

​

  1. 49
  2. 16
  3. 90
  4. 127
  5. 55
  6. 45
  7. 10

​

  1. 128
  2. 99
  3. 107
  4. 147
  5. 85
  6. 40
  7. 19

​

  1. 625
  2. 67
  3. 182
  4. 191
  5. 145
  6. 159
  7. 56

​

  1. 992
  2. 9
  3. 11
  4. 331
  5. 152
  6. 166
  7. 181

10 of 55

System binarny

Przekształcanie liczby z systemu binarnego

na system dziesiętny

​

Przykład:

1 1 0 0 1 12

25 24 23 22 21 20

​

25 + 24 + 0 + 0 + 21 + 20 = 5110

11 of 55

System binarny

Przekształcanie liczby z systemu binarnego

na system dziesiętny

​

Przykład:

1100112 = 1×25 + 1×24 + 0×23 + 0×22 + 1×21 + 1×20

= 1×32 + 1×16 + 0×8 + 0×4 + 1×2 + 1×1

= 32 + 16 + 0 + 0 + 2 + 1

= 32 + 16 + 2 + 1

= 5110

12 of 55

System binarny

Przekształcanie liczby z systemu binarnego

na system dziesiętny

​

Zadanie 2.

  1. 101011
  2. 1101110
  3. 1001101
  4. 1110100
  5. 10110101
  6. 11100110
  7. 10011111

​

  1. 11010001
  2. 11101011
  3. 10101100
  4. 11011111
  5. 11110001
  6. 10111010
  7. 100101111

​

  1. 111011000
  2. 101111101
  3. 110010111
  4. 111110000
  5. 101101011
  6. 111001101
  7. 110111010

13 of 55

System binarny

Przekształcanie liczby z systemu binarnego

na system dziesiętny

​

Zadanie 2.

  1. 100111011
  2. 111101001
  3. 1010101110
  4. 1110111101
  5. 1101011001
  6. 1011110110
  7. 1111001100

​

  1. 1101111001
  2. 1110110111
  3. 1011011101
  4. 1111100100
  5. 11001011101
  6. 11110101110
  7. 10111110011

14 of 55

System binarny

Parzystość liczby w systemie binarnym

Parzystość liczby w systemie binarnym zależy od ostatniej cyfry.

​

11112 → (1×23 + 1×22 + 1×21 + 1×20)10 → (8+4+2+1)10 → 1510

11102 → (1×23 + 1×22 + 1×21 + 0×20)10 → (8+4+2+0)10 → 1410

15 of 55

Zapisywanie liczb ujemnych�Jakie są sposoby?

  • SM: Znak i wartość bezwzględna (Sign-and-Magnitude)
  • ZU1: Uzupełnienie do jedynki (One’s Complement)
  • ZU2: Uzupełnienie do dwójki (Two's Complement)

16 of 55

Zapisywanie liczb ujemnych�SM: Znak i wartość bezwzględna (Sign-and-Magnitude)

​

  • Najbardziej znaczący bit (MSB - Most Significant Bit) = bit znaku („0” → dodatnia, „1” → ujemna).
  • Pozostałe bity = wartość bezwzględna (magnituda).

​

  • 00001100 → +12
  • 10001100 → -12

​

17 of 55

Zapisywanie liczb ujemnych�SM: Znak i wartość bezwzględna (Sign-and-Magnitude)

Wady:

  • dwa różne zera [00000000 → +0, 10000000 → –0]
  • Dodawanie i odejmowanie jest trudne:
  • Trzeba rozpatrywać znaki osobno.
  • Jeśli obie liczby mają ten sam znak → dodajesz ich wartości bezwzględne i przypisujesz ten znak.
  • Jeśli znaki są różne → musisz wykonać odejmowanie wartości bezwzględnych, a znak przypisać temu, kto jest „większy”.

​

18 of 55

Zapisywanie liczb ujemnych�SM: Znak i wartość bezwzględna (Sign-and-Magnitude)

Wady:

  • Odejmowanie – w SM nie można go łatwo zredukować do „dodawania liczby ujemnej” (jak w ZM2). Trzeba robić odejmowanie „na piechotę” (porównanie wartości, znak, różnica).�
  • Mało wydajny sprzętowo:
    • Procesory wolałyby mieć jedno zero i prostą zasadę „dodaj wszystko tak samo” – dlatego system SM praktycznie nie jest używany.�
    • W rzeczywistych komputerach zastąpił go ZM2 (two’s complement), bo tam dodawanie/odejmowanie działa tym samym układem.

​

​

19 of 55

Zapisywanie liczb ujemnych�SM: Znak i wartość bezwzględna (Sign-and-Magnitude)

Dlatego w praktyce SM to głównie teoria i historia.

20 of 55

Zapisywanie liczb ujemnych�ZU1: Uzupełnienie do jedynki (One’s Complement)

​

  • Najbardziej znaczący bit (MSB - Most Significant Bit) = bit znaku („0” → dodatnia, „1” → ujemna).
  • Pozostałe bity = wartość bezwzględna (magnituda).

​

  • 00000000 → +0
  • 11111111 → –0

​

  • 00000101 → +5
  • 11111010 → -5

21 of 55

Zapisywanie liczb ujemnych�ZU1: Uzupełnienie do jedynki (One’s Complement)

Wady:

  • Dwa zera - to komplikuje logikę, bo komputer musi traktować oba jako to samo, choć zapis jest różny.
  • Dodawanie liczb ujemnych – nie jest aż tak proste jak w ZM2:
    • Sumowanie działa na zasadzie zwykłego dodawania binarnego, ale jeśli pojawi się przeniesienie (carry) z najbardziej znaczącego bitu (MSB), to trzeba je dodać z powrotem do wyniku (tzw. end-around carry). Bez tej poprawki wynik będzie błędny.
  • Odejmowanie – można zredukować do dodawania (bo liczba ujemna to po prostu „odwrócona” wersja dodatniej), ale przez podwójne zero i konieczność przenoszenia wynik bywa mniej intuicyjny.

22 of 55

Zapisywanie liczb ujemnych�ZU2: Uzupełnienie do dwójki (Tow’s Complement)

Liczby dodatnie → zapisuje się normalnie w binarnym, MSB = 0.

Liczby ujemne → zapisuje się jako:

  • konwertujemy na zm1.
  • dodajemy do liczby wartość “1”.

Dodawanie i odejmowanie:

  • działa tak samo jak dla liczb dodatnich – zwykłe dodawanie binarne,
  • nie trzeba osobnych reguł jak w SM czy ZM1,
  • nadmiar (przeniesienie z MSB) jest po prostu odrzucany.

Odejmowanie = dodanie liczby ujemnej – dlatego to takie wygodne.

23 of 55

Zapisywanie liczb ujemnych�Pytanie

  • Na czym polegają ZM, ZU1, ZU2.
  • Kiedy odwracamy liczbę w systemie ZU1 i ZU2?

​

24 of 55

Zapisywanie liczb ujemnych�Normalizacja zapisu

ZM - Znak Moduł, ZU1 - Uzupełnienie do jedynki, ZU2 - Uzupełnienie do dwójki

​

Przykładowo:

1000101101ZM → 1111010010ZU1

→ 1111010011ZU2

25 of 55

Zapisywanie liczb ujemnych�Powtórka wiadomości

Zadanie.

  1. Przekształć liczbę -21110 na system dwójkowy używając ZM.
  2. Przekształć ZM->ZU1->ZU2.
  3. Przekształć ZU2->ZU1->ZM.
  4. Przekształć ZM na system dziesiętny.

26 of 55

Zapisywanie liczb ujemnych�Powtórka wiadomości

Zadanie.

  1. Przekształć liczbę +4710 na system dwójkowy używając ZM.
  2. Przekształć ZM na ZU1.
  3. Przekształć ZU1 na ZU2.
  4. Przekształć ZU2 na ZU1.
  5. Przekształć ZU1 na ZM.
  6. Przekształć ZM na system dziesiętny.

27 of 55

Działania na liczbach binarnych�Dodawanie

1

1100101

+ 110

–––––––––

1101011

28 of 55

Działania na liczbach binarnych�Dodawanie

111

1100101

+ 111

–––––––––

1101100

29 of 55

Działania na liczbach binarnych�Dodawanie

Zadanie.

A=3110, B=1210

  1. Przekształć liczby A i B na system binarny.
  2. Wykonaj obliczenie A+B w systemie binarnym.

30 of 55

Przepełnienie

ZU1 → ZU2: OVERFLOW

Co w momencie, gdy do liczby

11111112 dodamy 12 ?

​

  • Nastąpi przepełnienie (z ang. overflow), tj. sytuacja, w której wynik operacji przekracza maksymalną wartość, jaka może zostać przechowana w danym obszarze pamięci.

31 of 55

Działania na liczbach binarnych�Odejmowanie

1100101

- 111

–––––––––

???????

32 of 55

Działania na liczbach binarnych�Mnożenie

Ustawiamy obie liczby jedna pod drugą w taki sposób, aby ich bity o tej samej znaczności znalazły się w jednej kolumnie (wygodniej jest dłuższą zapisać nad krótszą).

Następnie stosujemy zwykłe mnożenie „pisemne”:

  • Mnożymy każdą cyfrę liczby górnej przez najmniej znaczącą cyfrę liczby dolnej, następnie przez drugą najmniej znaczącą...
  • Wynik operacji mnożenia cyfry przez liczbę zapisujemy od kolumny w której znajduje się nasz mnożnik
  • Dla ułatwienia puste kolumny można uzupełnić zerami, a następnie sumujemy wszystkie powstałe liczby

33 of 55

Działania na liczbach binarnych�Mnożenie

Przykład: 101 * 1011 = ?

34 of 55

Działania na liczbach binarnych�Mnożenie

Przykład: 1011 * 101 = ?

35 of 55

Działania na liczbach binarnych�Mnożenie

Pomnożyć binarnie liczbę 11012 przez 10112.

36 of 55

Działania na liczbach binarnych�Dzielenie

Operację dzielenia binarnego można przeprowadzić ręcznie korzystając z metody „pisemnej” tak, jak to robimy w systemie dziesiętnym.

Kiedy jednak chcemy podzielić dwie liczby binarne w programie komputerowym, należy:

  1. Sprawdzić, czy |dzielna| > |dzielnik|. Jeżeli nie, to ilorazem będzie 0, natomiast resztą z dzielenia będzie dzielna. W przeciwnym wypadku wykonujemy dzielenie.
  2. Dla dzielnika x-cyfrowego, przeprowadzamy następujące operacje na x cyfrach dzielnej licząc od lewej:
  3. Jeżeli dzielnik jest większy od x cyfr dzielnej, to dodajemy 0 do listy, która zwróci iloraz. W następnym działaniu sprawdzimy, czy x + 1 (jeżeli sytuacja się powtórzy, to x + 2, x + 3, …, itd.) cyfr dzielnej od lewej jest większe od dzielnika.
  4. W przeciwnym wypadku dodajemy do listy 1 a następnie „obcinamy” (na przykład poprzez odjęcie) pierwszą cyfrę dzielnej licząc od lewej.

37 of 55

Działania na liczbach binarnych�Dzielenie

Przykład: 1010 : 11 = ?

38 of 55

ZM,ZU1,ZU2�Działania

Zadanie 1.

  1. Zamień liczbę -9110 na system dwójkowy używając ZM.
  2. Liczbę z ZM przekształć na ZU1.
  3. Liczbę z ZU1 przekształć na ZU2.

​

Pozostaw liczbę ZU2 na tablicy.

39 of 55

ZM,ZU1,ZU2�Działania

Zadanie 2.

  1. Zamień liczbę 1610 na system dwójkowy używając ZM.
  2. Liczbę z ZM przekształć na ZU1.
  3. Liczbę z ZU1 przekształć na ZU2.

​

Pozostaw liczbę ZU2 na tablicy.

40 of 55

ZM,ZU1,ZU2�Działania

Zadanie 3.

  1. Oblicz A - B (tj. -9110 - 1610) używajac liczb ZU2 z zadania 1 i 2.
  2. Przekształć wynik z ZU2 na ZU1.
  3. Przekształć wynik z ZU1 na ZM.
  4. Przekształć ZM na system dziesiętny.
  5. Sprawdź, czy wynik się zgadza.

41 of 55

System binarny - liczby zmiennoprzecinkowe�Reprezentacja stałopozycyjna

42 of 55

System binarny - liczby zmiennoprzecinkowe�Reprezentacja stałopozycyjna

  1. Stała pozycja przecinka.
  2. Ustalona z góry pojemność (tj. ile bitów jest przeznaczonych na część całkowitą, a ile na część ułamkową).
  3. Metoda prosta, ale mało elastyczna.

43 of 55

System binarny - liczby zmiennoprzecinkowe�Reprezentacja zmiennopozycyjna

  1. Zmienna pozycja przecinka – jego miejsce jest określone przez cechę.
  2. Najczęściej używa się standardu IEEE 754 (np. float, double w programowaniu).
  3. Liczba jest zapisana jako:

wartość = znak × mantysa × 2wykładnik

44 of 55

System binarny - liczby zmiennoprzecinkowe�Struktura IEEE 754 (32-bit float):

Liczba 13.2510

​

  1. Zapis w systemie binarnym:

Część całkowita: 13₁₀ = 1101₂�Część ułamkowa 0.25₁₀ = 0.01₂

  1. Normalizacja (postać naukowa w systemie binarnym)�Czyli przesuwamy przecinek, by mieć 1.32510 x 101

1101.01₂ = 1.10101₂ × 23��

45 of 55

System binarny - liczby zmiennoprzecinkowe�Struktura IEEE 754 32-bit float:

3. Przesunięcie cechy (dodanie biasu)

  • 32-bit float → 8-bitowy wykładnik, bias = 127

E = e + 127 = 3 + 127 = 130

  • W binarnym zapisie: 13010=100000102

​

4. Mantysa (23bity)

  • Po wiodącej 1: 101011010110101�Dopełniamy zerami do 23 bitów:

mantysa = 101010000000000000000002

46 of 55

System binarny - liczby zmiennoprzecinkowe�Struktura IEEE 754 32-bit float:

Krok 5: Znak

  • Liczba dodatnia → 0

​

Krok 6: Składanie 32-bit IEEE 754

0 10000010 10101000000000000000000

47 of 55

System binarny - liczby zmiennoprzecinkowe�Struktura IEEE 754 (32-bit float):

Ukryta “jedynka”

W liczbach zmiennoprzecinkowych normalnych (normalized numbers) w standardzie IEEE 754 zawsze jest wiodąca „1” przed przecinkiem w mantysie.

​

Dlaczego tak się robi?

  • Oszczędzamy 1 bit, który pozwala mieć większą dokładność przy 23 bitach mantysy.
  • Jeśli w mantysie przechowalibyśmy wiodącą „1”, mielibyśmy tylko 22 bity precyzji zamiast 23.

48 of 55

System binarny - liczby zmiennoprzecinkowe�Struktura IEEE 754 (32-bit float):

A co z zerem?

  • Zero jest wyjątkiem.
  • W IEEE 754 mamy ±0, które reprezentuje się specjalnie:
    1. Wykładnik = 0
    2. Mantysa = 0
    3. Znak = 0 (dodatnie) lub 1 (ujemne)�

Czyli normalna liczba nigdy nie ma zera przed przecinkiem, bo zawsze tam jest 1.

49 of 55

System binarny - liczby zmiennoprzecinkowe

Czym jest bias?

Bias to stała liczba dodawana do rzeczywistego wykładnika liczby zmiennoprzecinkowej, aby uzyskać dodatnią reprezentację wykładnika w pamięci.

​

50 of 55

System binarny - liczby zmiennoprzecinkowe

Standardy zapisu liczb

IEEE 754 – arytmetyka zmiennoprzecinkowa:

  • 32-bit float (single precision)
  • 64-bit double (double precision)
  • 16-bit half precision
  • 128-bit quad precision
  • Dodatkowo standard definiuje:
    • operacje arytmetyczne,
    • zaokrąglenia,
    • wartości specjalne (NaN, ±∞, ±0).

IEE 754r:

  • Rozszerza standard o decimal floating-point (liczby dziesiętne), przydatne w finansach.
  • Wprowadza dodatkowe tryby zaokrągleń i poprawki w reprezentacji NaN.

51 of 55

System binarny - liczby zmiennoprzecinkowe

Standardy zapisu liczb

Jeśli chodzi tylko o reprezentację liczb zmiennoprzecinkowych w komputerze, to głównie IEEE 754 i jego rozszerzenia (754r, half/double/quad).�

Inne standardy IEEE dotyczą sprzętu, komunikacji czy języków sprzętowych, nie bezpośrednio reprezentacji liczb.

​

52 of 55

System binarny

Metoda Hornera

Metoda Hornera to sposób obliczania wartości wielomianu w prosty i szybki sposób.

W przypadku systemów liczbowych – każdą liczbę w systemie binarnym traktujemy jak taki wielomian, gdzie podstawiamy podstawę systemu (tu: 2).

53 of 55

System binarny

Metoda Hornera

Weźmy liczbę binarną:

10112

54 of 55

System binarny

Metoda Hornera - jak to zrobić

Metoda Hornera polega na tym, że zamiast liczyć potęgi 2 i je dodawać, robimy to po kolei:

Bierzemy kolejne cyfry liczby i robimy taki schemat:

  1. Zaczynamy od pierwszej cyfry:� wynik = 1�
  2. Następna cyfra to 0:� wynik = wynik · 2 + 0 = 1 · 2 + 0 = 2�
  3. Następna cyfra to 1:� wynik = wynik · 2 + 1 = 2 · 2 + 1 = 5�
  4. Następna cyfra to 1:� wynik = wynik · 2 + 1 = 5 · 2 + 1 = 11

55 of 55

System binarny

Zadanie domowe

Zadanie 1. Przekształć następujące liczby z systemu dziesiętnego na system binarny (dwójkowy):

  1. 307610
  2. 203810
  3. 292510

​

Zadanie 2. Przekształć następujące liczby z systemu binarnego na system dziesiątkowy:

  1. 11001100011112
  2. 10111110101102
  3. 01111100101112