Skocz do zawartości

System dwójkowy


Rekomendowane odpowiedzi

System dwójkowy:

System binarny operuje jedynie na dwóch cyfrach. Są to: zero i jeden.

Stosując rozmaite kombinacje tych cyfr można uzyskać dowolną liczbę.

Aby liczbę zapisaną dziesiętnie skonwertować na system binarny trzeba

rozbić ją na ciąg zer i jedynek. Najwygodniej jest narysować sobie małą

tabelkę, i postępować w odpowiedni sposób:

 

|128 |64 |32 |16 |8 |4 |2 |1

 

Weźmy liczbę 169 (w tabeli ASCII jest to znak "©"). Teraz spójrz na tabelkę i

zastanów się, czy pierwsza liczba z tabeli [idąc od lewej] mieści się w 169 ?

Konkretnie, czy 128 mieście się w 169? Jak widać jest to prawdą. Tak więc w

tabelce pod liczbą 128 piszemy sobie cyfrę 1. Po odjęciu od 169 liczby 128

otrzymamy liczbę 41. Teraz należy postępować podobnie z kolejnymi liczbami w

tabeli. Sprawdzamy, czy kolejna liczba z tabeli [64] mieści się w liczbie 41.

Nie, więc piszemy pod liczbą 64 cyfrę 0. W liczbie 32 wstawiamy 1. Teraz kolej

na liczbę 16. Ona nie mieści w sobie liczby 9, więc piszemy 0. Różnica liczb:

9 i 0, to 1. Zatem trzeba postawić cyfrę 0 pod liczbami 4 i 2 ponieważ są większe

od jedynki. Ostatnia liczba jaka nam została to 1. Mam nadzieję, że wiesz gdzie

ją postawić? Cała liczba w postaci binarnej przedstawia się następująco:

 

128 |64 |32 |16 |8 |4 |2 |1

1 |0 |1 |0 |1 |0 |0 |1

 

Przekonajmy się teraz, czy aby nie popełniliśmy błędu. Popatrz na tabelkę. Idąc od

lewej tuż pod liczbą 128 mamy cyfrę 1. Następna to zero, jeden, zero, jeden, dwa zera

i ostatnia to jedynka. Druga znajduje się pod liczbą 32, trzecia pod liczbą 18 i czwarta

pod 1. Sumujmy wszystko otrzymamy: 128 + 32 + 8 + 1, czyli 169. Oznacza to, że nie

popełniliśmy błędu. Oczywiście podczas przeliczania należy pamiętać, aby tabelka była

odpowiednio duża. Nasza wystarczy dla liczb nie większych, niż 255 (wystarczy do

całej tabelki ASCII). Jeżeli chcesz skonwertować liczbę większą musisz posłużyć się

następującą tabelą:

 

32768 |16384 |8192 |4096 |2048 |1024 |512 |256 |128 |64 |32 |16 |8 |4 |2 |1

 

Koniec definicji teraz zademonstruje konwerter systemu dwójkowego na dziesiętnie:

 

https://gmclan.org/up2092_12_dec_bin.html

Odnośnik do komentarza
Udostępnij na innych stronach

Too bad...

 

Z resztą, jest lepszy sposób.

 

Dzielisz na 2 i sprawdzasz resztę z dzielenia - jeśli jest, to zapisujesz 1, jeśli nie, zapisujesz 0 i koniec. Sprawdźmy:

18 / 2 = 9 r. 0

9 / 2 = 4 r. 1

4 / 2 = 2 r. 0

2 / 2 = 1 r. 0

1 / 2 = 0 r. 1

Wynik: 18 (10) = 10010 (2)

 

E: Albo dla ułatwienia: jeśli liczba jest nieparzysta, to odejmujemy od niej 1, a potem dzielimy ją przez 2. Zapisujemy wtedy 1. Parzysta - zapisujemy 0.

93 -> 92 / 2 = 46 | 1

46 -> 46 / 2 = 23 | 0

23 -> 22 / 2 = 11 | 1

11 -> 10 / 2 = 5 | 1

5 -> 4 / 2 = 2 | 1

2 -> 2 / 2 = 1 | 0

1 -> 1 / 2 = 0 | 1

Odp.: 1011101

Odnośnik do komentarza
Udostępnij na innych stronach

A z systemu dziesiętnego na heksadecymalny:

349 / 16 = 21 r. 13

=> D

21 / 16 = 1 r. 5

=> 5

1 / 16 = 0 r. 1

=> 1

Wynik: 15D (16) = 349 (10)

 

W sumie, to dla każdego systemu liczbowego jest ten sam wzór:

a / b = c1, r. d1

c1 / b = c2, r. d2

...

cn / b = 0, r. dn

gdzie:

a - liczba do zamiany

b - system liczbowy

c - wynik tymczasowy (kolejny element liczby do zamiany)

d - cyfra

Wynik: d n|d n-1|d n-2| ... |d2|d1|

 

Thank you for listen my speech.

Odnośnik do komentarza
Udostępnij na innych stronach

Marek, system binarny może nie aż tak, ale heksadecymalny jak najbardziej, gdyż podawanie trzeć argumentów do stworzenia koloru może być czasem nie na miejscu. Funkcja dec_to_bin:

a = argument[ 0 ];
b = false;

if ( a mod 2 )
    b = true;

res = '';

while( true )
{       
    if ( b )
        res += string( ( a mod 2 ) );
    else
        res += string( !( a mod 2 ) );   

    if ( a == 1 )
        break;    

    a = a div 2;
}

return res;

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

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

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...