2008-01-20

Bajt a bit | Zalążek systemu binarnego

Kolejna osoba napisała do mnie z pytaniem, dlaczego jej neostrada 1Mb/s ściąga tylko 128KB/s. By nie musieć tłumaczyć następnym dopytującym się o to osobą postanowiłem tej osobie odpowiedzieć na moim świeżo założonym blogu. Trzeba się nim pochwalić, nie?
Musisz wiedzieć że b to nie to samo co B. Małe b oznacza bit, a duże B to bajt. Czym się różni bajt od bitu oprócz nazwy? Wielkością. Na jeden bajt składa się 8bitów. 1bit może przybrać tylko dwie wartości, 1 lub 0. Bajt ma 256 wartości(łącznie z zerem!). Wynika to z faktu że 2**8=256. Dwie gwiazdki oznaczają potęgowanie. Teraz spójrz na jednostki. K to skrót od kilo czyli razy 1000, ale komputery liczą w systemie binarnym, przez co musisz zapamiętać by pomnożyć twoją wartość przez 1024. Dlaczego tak jest? Ponieważ mnożnik dla K to 2**10. Jeśli jest M przed jest to mega-jednostka np. megabajt, jego mnożnik to 2**20, kolejne mnożniki jednostek to giga, tera, peta, eksa, zetta, jotta. Skrótem tych mnożników jest 1 litera jej nazwy, przemieniona na dużą.
To jest nasz wstęp do obliczeń. Na początku sprowadzimy obie jednostki do takich samych. W 128KB nic nie trzeba zmieniać, za to 1Mbit trzeba pomnożyć przez 1024 by "zejść" do kilobajtów i podzielić przez 8 by zmienić bity na bajty. Uzyskaliśmy coś takiego:
1Mb=1024Kb
1024Kb/8=128KB
Dla ciekawych wytłumaczę jeszcze skąd się wzięło 2**8. Przygotuj 4 monety. Każda moneta ma 2 strony, orzełka i reszkę, są to nasze wartości. Oczywiście, możesz się jeszcze kłócić że jest krawędź, ale ona tylko Ci przysporzy liczenia, więc jej nie zauważamy. Weź jedną
monetę. Ile ona ma przyjąć wartości? Zgadza się dwie(pamiętaj że nie widzimy krawędzi). Weź jeszcze jedną. Mimo że sama moneta ma 2 wartości, 2 monety już mogą mieć 4 wartości. Weź jeszcze jedną monetę. Policz ile mogą różnych wartości wyrazić. Powinno wyjść 8(czyli 2**3). Weźmy kolejną, znowu liczymy. Powinno wyjść 16(czyli 2**4). Teraz sobie oznacz orzełka jako 1 i reszkę jako 0. Twoje monety zamieniły się w tej chwili w bity! Z pewnością nie będziesz miał problemu z ułożeniem monet w taki sposób by stworzyć wartości 0 lub 1. Problem może się pojawić dla większych wartości. Bo jak wyrazić wartość 3? Ustaw monety tak:
reszka, reszka, orzeł, reszka
Wyszło Ci 0010. To będzie 2. Teraz co zrobić by wyrazić 4? Wystarczy odwrócić reszkę. Później dla piątki odwracamy orzełki i reszkę za naszym ostatnim orzełkiem dotychczasowym orzełkiem
również odwracamy. Teraz powtarzamy ten proces dla kolejnych liczb.
  • 0000
  • 0001
  • 0010
  • 0011
  • 0100
  • 0101
  • 0110
  • 0111
  • 1000
  • 1001
  • 1010
  • 1011
  • 1100
Mam nadzieję że już wiesz skąd wziął się ten wzór. Zauważ że pierwszą wartość zajmuje nam zero. Więc najwyższą wartość jaką wyrazimy w ten sposób jest 2**licza_monet-1! To co Ci przed chwilą zaprezentowałem to system binarny. Któremu poświęcę całą następną notkę.

5 komentarzy:

Anonimowy pisze...

Bo jak wyrazić wartość 3? Ustaw monety tak:
reszka, reszka, orzeł, reszka
Wyszło Ci 0010. To będzie 3.

to nie jest 3 tylko 2 :) binarna literówka.

nexor pozdrawiam.

Anonimowy pisze...

Bardzo miło mi sie czytało ten wpis na blogu a mam zaliczenia z informatyki właśnie z układ binarnego i bitow/bajtow. Pozdrawiam!

Anonimowy pisze...

ad [Błąd]
"Wyszło Ci 0010. To będzie 3."
Szkoda że mimo upływu 4 lat
NIE POPRAWIŁEŚ błędu.
Co innego po wydrukowaniu artykułu
tam gdzie nie ma możliwosci to wtedy pisze sie sprostowannia a ty nic:(
zamiast poprawić wyjaśniasz w odpowiedzi... szkoda :(

Anonimowy pisze...

Napisałeś:
"chwilą zaprezentowałem to system binarny. Któremu poświęcę całą następną notkę."
no i gdzie to jest i jak to można znaleźć na Twoim blogu?
Szukam i nie moge trafić? :(
Szkoda

Unknown pisze...

Poprawiłem, jednak później bloga musiałem przywrócić i stara wersja nie zawierała poprawki.

Wystarczyło kliknąć "Następny post".