Skocz do zawartości

Blog Phoenix'a

  • wpisy
    7
  • komentarzy
    167
  • wyświetleń
    6 588

Ciekawostki z techbazy #1: Wstęp i systemy liczbowe

880 wyświetleń

Witam.

Jako że mi się nudzi i pewnie w ferie jeszcze bardziej mi się będzie nudzić, to podzielę się z wami paroma rzeczami z techbazy (głównie z cyfrówki :D) (kierunek Tele-Inf, ale każdy kto idzie do jakiegokolwiek elektronika/mechatronika też to będzie miał). Na dzisiaj trochę o binarce, co przydaje się ogólnie w programowaniu, a i także o innych systemach liczbowych. Zapraszam.

 

 

Na początek: Co to jest tak naprawdę system dziesiętny?

Tym systemem posługujemy się tak naprawdę na co dzień. Wygląda on tak:

D = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

Czyli zawiera on cyfry (ważne: nie mylić cyfr z liczbami!) od 0 do 9. A teraz dajmy sobie jakąś dowolną liczbę w tym systemie, np. 953, i rozłóżmy na czynniki.

 

953 = 9 * 10^2 + 5 * 10^1 + 3 * 10^0

(^ to potęga)

 

Po tym przykładzie możemy wywnioskować, że system dziesiętny to system pozycyjny, czyli każda cyfra ma określoną przez bazę systemu wartość. W tym przypadku baza wynosi 10, ponieważ jest to system dziesiętny i z definicji zawiera 10 cyfr. Więc każda cyfra w każdej liczbie systemu pozycyjnego ma określoną w taki sposób wartość:

x * z^y

gdzie x to cyfra, z to podstawa danego systemu, w naszym przypadku 10, a y to pozycja tej cyfry w liczbie liczona od 0. Na tym opiera się każdy system pozycyjny, więc to podstawa.

 

Skoro już wiemy co to system pozycyjny i jak wygląda, możemy przejść dalej.

 

System binarny (dwójkowy)

 

System binarny to system w którym działa każde urządzenie cyfrowe (NIE KAŻDE URZĄDZENIE ELEKTRONICZNE!). W tym momencie jest to standard, ponieważ wcześniej urządzenia opierały się na sygnałach analogowych, a w dzisiejszych czasach wszystko jest łatwiej zrobić w technice cyfrowej.

 

Krótko mówiąc, można powiedzieć że to najprostszy z systemów pozycyjnych, ponieważ wygląda on tak:

B = {0, 1}

Zawierają się na niego tylko 2 cyfry, odpowiadające stanowi niskiemu (0) oraz wysokiemu (1) (ale to tłumaczenie bardziej dla elektroników).

 

No, a więc jak wygląda dowolna liczba binarna, oraz jak rozłożyć ją na czynniki? Pamiętamy wzór z systemu dziesiętnego, w tym wypadku bazą jest 2, czyli przykładowo liczba 101001 rozłożona na czynniki będzie wyglądała tak:

101001 = 1 * 2^5 + 0 * 2^4 + 1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0

Powyższy przykład opisuje jednocześnie sposób konwersji między systemem binarnym a dziesiętnym.

Troszkę skróćmy sobie to równanie.

101001 = 1 * 2^5 + 0 * 2^4 + 1 * 2^3 + 0 * 2^2 + 0 * 2^1 + 1 * 2^0 = 2^5 + 2^3 + 2^0 = 32 + 8 + 1 = 41

Tadam! Umiemy przekonwertować liczbę binarną na dziesiętną!

 

A jak przekonwertować liczbę dziesiętną na dwójkową?

Musimy dzielić przez 2, a reszta będzie nam określała cyfrę w systemie dwójkowym. Opiszę to na przykładzie liczby 96.

96 : 2 = 48 reszty 048 : 2 = 24 reszty 024 : 2 = 12 reszty 012 : 2 = 6 reszty 06 : 2 = 3 reszty 03 : 2 = 1 reszty 11 : 2 = 0 reszty 1

Teraz bierzemy wartości reszty od dołu go góry i zapisujemy jako liczbę. Wychodzi 1100000. Możemy sprawdzić na kalkulatorze (tryb programisty) czy to poprawny wynik.

 

No dobrze, znamy już system binarny. Teraz kolejny system, który przydaje się w informatyce.

 

System hexadecymalny (szesnastkowy)

System ten jest kolejnym systemem, stworzony został by "zmiejszyć liczby", ponieważ cyfra w systemie szesnastkowym (dalej będę nazywał go po prostu hex) ma tak jakby większą wartość niż liczba w systemie dziesiętnym, z powodu że ma większą podstawę.

 

Wygląda on tak:

H = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F}

Okej, ale co tam robią litery? Tym literom są przyporządkowane wartości, w systemie dziesiętnym można je określić tak:

A = 10B = 11C = 12D = 13E = 14F = 15

W tym systemie jest ogólnie określana pamięć komputera, adresy, i ogólny assembler. Także dla niektórych to podstawa.

 

Przechodzimy do rozpisania go. Weźmiemy liczbę 4BD. W tym przypadku podstawa wynosi 16.

4BD = 4 * 16^2 + 11 * 16^1 + 13 * 16^0

I w tym momencie możemy zrobić to samo, co w binarnym - zamienić na system dziesiętny.

4BD = 4 * 16^2 + 11 * 16^1 + 13 * 16^0 = 4 * 256 + 11 * 16 + 13 * 1 = 1024 + 176 + 13 = 1213

Proszę bardzo. Oczywiście możemy też zrobić tu to samo, co w systemie binarnym, jeśli chcemy zamienić liczbę systemu dziesiętnego na hex, dzielimy przez podstawę systemu. Przykładowo, liczba 632:

632 : 16 = 39 reszty 839 : 16 = 2 reszty 72 : 16 = 0 reszty 2

Zapisujemy od dołu do góry reszty z dzielenia, i wychodzi nam liczba 278!

 

Mógłbym jeszcze tutaj omówić system ósemkowy, ale zasada wygląda w nim tak samo jak w powyższych - zawiera od cyfry od 0 do 7, zasady zamiany na i z systemu dziesiętnego wyglądają tak samo. Polecam dla kogoś kto się tym interesuje, ale w następnych tutkach będą o nim wzmianki.

 

Cóż, kontynuacja niedługo. Enjoy.



26 komentarzy


Rekomendowane komentarze



Napisano

Matma, aczkolwiek sobie linka zapiszę, bo się może kiedyś przydać.

Link do komentarza

Tak, ale to dopiero podstawy podstaw, ja miałem jeszcze działania na binarce oraz inne systemy typu BCD, 1 z x, albo takie jak U1, U2 i BIAS, to jest czarna magia :D

Link do komentarza

Napisano

Dwójkowy i szesnastkowy umiem, ale nie spoglądałem na inne, ale pewnie też podobnie :P

Link do komentarza

Można opisać z hexa na binarny, też jest dość istotny w programowaniu:

Mając liczbę 11001101 ja od razu widzę, że to w hexa jest to CD.

Po prostu oddzielamy od siebie 4 cyfry od końca (1100 1101). W pierwszym przypadku jest to 12, czyli C, a w drugim 13, czyli D.

1100 1101 bin = CD w hex.

Link do komentarza

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się
×
Okienko zamknie się za 5 sekund...