![]() |
|
HKSW - Kurs Informatyki - Wersja do druku +- Forum Republiki Bialeńskiej (https://vonthorn.sarmacja.org/galeria/archive/bialenia/spolecznosc) +-- Dział: Peryferia (https://vonthorn.sarmacja.org/galeria/archive/bialenia/spolecznosc/forum-8.html) +--- Dział: Archiwum (https://vonthorn.sarmacja.org/galeria/archive/bialenia/spolecznosc/forum-331.html) +---- Dział: Państwa stowarzyszone (https://vonthorn.sarmacja.org/galeria/archive/bialenia/spolecznosc/forum-224.html) +----- Dział: Królestwo Hasselandu (https://vonthorn.sarmacja.org/galeria/archive/bialenia/spolecznosc/forum-336.html) +------ Dział: Instytucje Królestwa Hasselandu (https://vonthorn.sarmacja.org/galeria/archive/bialenia/spolecznosc/forum-407.html) +------- Dział: Hasselandzka Królewska Szkoła Wyższa (https://vonthorn.sarmacja.org/galeria/archive/bialenia/spolecznosc/forum-431.html) +------- Wątek: HKSW - Kurs Informatyki (/thread-4907.html) |
HKSW - Kurs Informatyki - Bajtuś - 09.04.2016 <b>Wykład 1: Liczby dwójkowe.</b> Komputer to maszyna elektroniczna, dla której naturalnym systemem liczenia byłby taki, który opisywał by dwa stany. Wysoki i niski. Narzuca się tutaj od razu system dwójkowy, jako ten, który ma tylko dwie cyfry w swoim zestawie 0 i 1. Więc, aby zgłębić tajniki komputera dobrze jest wiedzieć co to jest ten system. System dwójkowy jest najmniejszym systemem pozycyjnym - zawiera bowiem tylko dwie cyfry (system dziesiętny - używany powszechnie - zawiera aż 10 cyfr). Początkowo niewprawnym użytkownikom może on sprawić trochę problemów, ale po kilu, kilkunastu próbach, problemy znikają. Kiedyś w zamierzchłych czasach w nieistniejącym reala, kiedy usiłowano wprowadzić dziesięciolatkę, w klasach drugich i trzecich wprowadzono naukę systemu dwójkowego i trójkowego. Okazało się, że dzieci bez problemów liczyły w tych systemach, a nawet potrafiły (nie wiedząc o tym liczyć dwójkowo w kodzie BCD). Niestety po paru latach systemy te zniknęły z programu nauczania, bo niestety najwięcej trudności sprawiły nauczycielom uczącym nauczania początkowego). To tyle historii. Przejdźmy do sedna sprawy. Podstawą systemu dwójkowego jest liczba 2. Jak wiecie z nauki o systemie dziesiątkowym, kolejne cyfry w zapisie pozycyjnym mają wagę, która jest potęgą podstawy liczenia, czyli w naszym przypadku 2. Weźmy jakąś liczbę binarną i spróbujmy policzyć jaką ma wartość w systemie dziesiętnym. 10101101 Zaczynamy od końca: 1+0*2+1*4+1*8+0*16+1*32+0*64+1*128= 1+4+16+32+128=181 Proste? Gorzej (??) jest w drugą stronę, ale nie jest to do końca prawdą. Istnieje algorytm zamiany liczby dziesiętnej na liczbę w systemie o dowolnej podstawie. <i>Daną liczbę dziesiętną dzielimy całkowicie przez p (p-podstawa systemu liczenia) dotąd, dopóki w wyniku tego dzielenia nie otrzymamy liczby zero. Otrzymane reszty z dzielenia pisane w odwrotnej kolejności, dają nam szukane rozwinięcie liczby w systemie p.</i> Spróbujmy to zrobić dla liczby z 181. 181 : 2 = 90 r 1 90 : 2 = 45 r 0 45 : 2 = 22 r 1 22 : 2 = 11 r 0 11 : 2 = 5 r 1 5 : 2 = 2 r 1 2 : 2 = 1 r 0 1 : 2 = 0 r 1 (mamy zero - koniec dzielenia) i teraz liczba: 10110101 Jako prace samodzielną proszę podać dwójkowo swój wiek. Jeśli będzie zainteresowanie przedstawię następne części wykładu. Odp: HKSW - Kurs Informatyki - Eddard Noqtern - 09.04.2016 Powiedzmy, że mikronacyjnie mam 35 lat. 35/2 = 17 r 1 17/2 = 8 r 1 8/2 = 4 r 0 4/2 = 2 r 0 2/2 = 1 r 0 1/2 = 0 r 1 35 => 100011 Odp: HKSW - Kurs Informatyki - Hewret von Thorn - 09.04.2016 Cytat:Jako prace samodzielną proszę podać dwójkowo swój wiek. 10011 Odp: HKSW - Kurs Informatyki - Bajtuś - 09.04.2016 Obydwaj zaliczyliście pracę domową ![]() Odp: HKSW - Kurs Informatyki - Fiodor Swirydiuk - 09.04.2016 Powiedzmy, że mam w mikronacjach 20 lat. 20/2 = 10 r 0 10/2 = 5 r 0 5/2 = 2 r 1 2/2 = 1 r 1 Mam 0011 lat. Odp: HKSW - Kurs Informatyki - Bajtuś - 09.04.2016 (09.04.2016, 22:25:56)Fiodor Swirydiuk link napisał(a): Powiedzmy, że mam w mikronacjach 20 lat.ostatnia linijka jest błędna 2/2=1 r 0 1/2=0 r 1 10100 Odp: HKSW - Kurs Informatyki - Fiodor Swirydiuk - 10.04.2016 (09.04.2016, 22:55:40)Bajtuś link napisał(a): [quote author=Fiodor Swirydiuk link=topic=5046.msg44662#msg44662 date=1460233556]ostatnia linijka jest błędna 2/2=1 r 0 1/2=0 r 1 10100 [/quote] Mój błąd.
Odp: HKSW - Kurs Informatyki - Hewret von Thorn - 10.04.2016 Przy małych liczbach, takich jak wiek to można robić w ten sposób: [attachment id=1 msg=44688] Ale jak są to liczby większe, to pozostaje dzielić.
Odp: HKSW - Kurs Informatyki - Bajtuś - 10.04.2016 Można też odejmować: znaleźć największą potęgę dwójki mniejszą od liczby zamienianej, odjąć ją potem powtórzyć ...aż do otrzymania 0 lub jedynki... problem w pamiętaniu o potęgach, które nie brały po drodze udziału w odejmowaniu bo trzeba by zapisać zera na odpowiednich pozycjach. W sumie najprostsze jest jednak dzielenie. Przy wielkich liczbach dwójkowych stosuje się inny zapis, ale to będzie w kolejnych wykładach. HKSW - Kurs Informatyki - wykład 2 - Bajtuś - 10.04.2016 Wykład 2: Operacje logiczne na liczbach dwójkowych Podstawowymi operacjami w informatyce są operacje logiczne. Jest ich kilka: NOT (nie) - negacja / zaprzeczenie - operacja jednoargumentowa AND (i)- koniunkcja lub iloczyn logiczny - dwuargumentowa OR (lub) - alternatywa lub suma logiczna - dwuargumentowa XOR - różnica symetryczna - dwuargumentowa. W logice rozróżniamy dwa stany: true (prawda) i false (fałsz), a to bardzo pasuje do systemu dwójkowego. Przymuje się, że fałsz (false) ma wartość 0, prawdza (true) wartość 1. Dla przypomnienia coniektórym tabele wartości logicznych: Zaprzeczenie (NOT) [table] [tr] [td]NOT[/td][td]0[/td][td]1[/td] [/tr] [tr] [td] [/td][td]1[/td][td]0[/td] [/tr] [/table] Koninkcja (AND) [table] [tr] [td]AND[/td][td]0[/td][td]1[/td] [/tr] [tr] [td]0[/td][td]0[/td][td]1[/td] [/tr] [tr] [td]1[/td][td]0[/td][td]1[/td] [/tr] [/table] Alternatywa (OR) [table] [tr] [td]OR[/td][td]0[/td][td]1[/td] [/tr] [tr] [td]0[/td][td]0[/td][td]1[/td] [/tr] [tr] [td]1[/td][td]1[/td][td]1[/td] [/tr] [/table] Różnica symetryczna (XOR) [table] [tr] [td]NOT[/td][td]0[/td][td]1[/td] [/tr] [tr] [td]0[/td][td]1[/td][td]0[/td] [/tr] [tr] [td]1[/td][td]0[/td][td]1[/td] [/tr] [/table] Ciekawostka: jesli mama dwieliczby dwójkowe a i b to: operacja (a XOR b) XOR b = a. Ale o tym dokładniej w nastepnych wykładach. Wykład 3: Podstawowe pojęcia informatyczne. - Bajtuś - 11.04.2016 Wykład 3: Podstawowe pojęcia informatyczne. Najmniejszą jednostką informatyczną jest BIT. Przyjmuje on jedną z dwóch wartości: 1 lub 0. Od niej przyjęło się pewne nazewnictwo związane z komputerami, np system 32-bitowy, kolor 24-bitowy, procesor 8-bitowy itd. Operowanie bitami w informatyce byłoby bardzo uciążliwe i kłopotliwe, chociażby w samym zapisie liczby bitowej. Wyobraźmy sobie, że chcąc się połączyć np. z naszym forum musielibyśmy wpisać ciąg 32-cyfrowy składający się z 0 i 1. Dlatego wprowadzono większe jednostki. Podstawową jednostką, którą operuje się jest BAJT (ang: BYTE). Bajt składa się z ośmiu bitów ułożonych w pewnej kolejności i odpowiednio ponumerowanych: b7,b6,b5,b4,b3,b2,b1,b0 Bit b7 nazywa się bitem najstarszym, b0 bitem najmłodszym. Jeśli bajt potraktujemy jako ośmiocyfrową liczbę dwójkową, to okazuje się, że na jednym bajcie można zapisać 256 różnych kombinacji 0 i 1 co daje nam zakres od 0 do 255. I teraz już wiadomo, dlaczego adresy IP tak wyglądają: 192.168.1.1 - adres IP składa się z czterech oktetów (bajtów), oczywiście mówimy o adresie w wersji 4. Wróćmy do bajtów. Tak jak w systemie dziesiętnym, tak i w informatyce są jednostki wielokrotne. Żeby nie mieszać przyjęto przedrostki z systemu dziesiętnego (kilo, mega ...). Jest tylko mała różnica do przedrostka kilo w systemie dziesiętnym przyjęto liczbę 1000, a ponieważ w informatyce posługujemy sie systemem dwójkowym - do przedrostka kilo przyjęto 2 do potęgi 10 czyli 1024. I tak: 1 KB = 1024 B (kilobajt) 1 MB = 1024 KB (megabajt) 1 GB = 1024 MB (gigabajt) 1 TB = 1025 GB (terabajt) I tu mała dygresja: Producenci dysków twardych i płyt dvd i bd oszukują klientów podając że np BD25 ma pojemność 25GB a fizycznie ma 23.31GB, to samo dotyczy dysków twardych 1TB dysk nie ma 1TB danych tylko dużo mniej - dlaczego ... przy przeliczaniu na TB zastosowano mnożnik 1000 a nie 1024 i stąd różnica. Dla wprawy proszę policzyć ile bajtów będzie miała płyta BD25 gdyby ją liczyć właściwie (tzn miała faktyczną pojemność 25GB). Odp: HKSW - Kurs Informatyki - Hewret von Thorn - 11.04.2016 1024 * 1024 * 1024 * 25 = 26 843 545 600 Odp: HKSW - Kurs Informatyki - Bajtuś - 11.04.2016 a płytka BD25 ma 25 025 314 815 B Odp: HKSW - Kurs Informatyki - Hewret von Thorn - 11.04.2016 26 843 545 600 B 25 025 314 815 B = 1 818 230 785 B czyli ~1,69 GB Tak więc płytka komercyjnie ma ~23,31 GB. Odp: HKSW - Kurs Informatyki - Bajtuś - 11.04.2016 zgadza się a zobacz sobie dyski twarde 1TB (niektórzy producenci piszą że ma 1000GB), a fizycznie ma 931GB Odp: HKSW - Kurs Informatyki - Eddard Noqtern - 11.04.2016 Cytat:Dla wprawy proszę policzyć ile bajtów będzie miała płyta BD25 gdyby ją liczyć właściwie (tzn miała faktyczną pojemność 25GB). 25 GB = 25 * 1024 MB = 25600 MB = 25600 * 1024 KB = 26214400 KB = 26214400 * 1024 B = 26843545600 Bajtów HKSW - Kurs Informatyki - wykład 4 - Bajtuś - 20.04.2016 Wykład 4: Liczby heksadecymalne. Operowanie liczbami dwójkowymi dla przeciętnych zjadaczy chleba jak i dla "tych co są w temacie" wraz z rozwojem technologii informatycznych stało się bardzo uciążliwe. Już w latach 90 ubiegłego stulecia programiści zaczęli ułatwiać sobie życie. Zauważono, że trzycyfrowe liczby dwójkowe mają wartości od 0 do 7, a to są cyfry używane przez system ósemkowy. I zamiast pisać liczbę dwójkową: 11111111 można napisać 377 (ósemkową). System ósemkowy, krótko zagościł u programistów, bo okazało się że zamiast 3 cyfr dwójkowych można wziąć 4 cyfry dwójkowe (a to jest akurat połowa bajtu). System ósemkowy utrzymał się w systemie LINUX do zapisu uprawnień do plików i folderów. Czterocyfrowa liczba dwójkowa przeniesie wartości od 0 do 15, a to odpowiada systemowi szesnastkowemu (heksadecymalnemu). Problem w tym, że w alfabecie łacińskim wykorzystano do zapisu liczb cyfry arabskie, a tych jest tylko 10 (bo tyle potrzeba do zapisu liczby w systemie dziesiątkowym). Dlatego przyjęto na potrzeby zapisu cyfr hexadecymalnych od 10 do 15 jedno-znakowe cyfry, którymi są początkowe litery alfabetu łacińskiego. I tak cyfrę 10 oznaczono literą A, 11 - B, 12 - C, 13 - D, 14 - E i 15 - F. i tak jeden bajt przyjmuje wartości od 0 ..255 dziesiętnie; od 0 ... 377 ósemkowo i od 0 .. FF szesnastkowo. Zamiana liczb dziesiętnych na hexa korzysta z tego samego algorytmu co na system dwójkowy. I tu ciekawostka: osoba, która ma 18 lat zapisanych w systemie heksadecymalnym faktycznie ma 24 lata (dziesiętnie). Wykorzystanie liczb szesnastkowych np do zapisu koloru w standardzie RGB: np. kolor biały to #FFFFFF (znak # oznacza zapis szesnastkowy liczby), a czarny #000000. (Pierwsze dwie cyfry hexa odpowiadają za ilość koloru czerwonego ®, dwie następne za kolor zielony (G), a ostanie dwie za kolor niebieski (B)). Praca domowa: Proszę zamienić liczbę 128567 na liczbę szesnastkową i podać jaką wartość dziesietną ma liczba #25AB. Wykład 5: U2 - Bajtuś - 02.05.2016 Wykład 5: U2 Wbrew oczekiwaniom tematem dzisiejszego wykładu nie będzie historia zespołu U2. Jak pamiętacie z poprzednich wykładów na liczbach binarnych da się zapisać liczby naturalne. W zastosowaniach operowanie takimi tylko liczbami stwarza duże problemy. Na przykład chcielibyśmy wykonać następujące działanie: 2-5 = -3. No i tutaj mamy mały szkopuł, pojawił się znak minus, a jego nie ma w liczbach dwójkowych. Cóż więc zrobić. Oczywiście ten problem został szybko rozwiązany, lecz nie sie on za sobą ciekawe błędy, wynikające z nieostrożności programisty niż z błędów komputera. Jak zapisać w kodzie dwójkowym liczbę ujemną. Rozpatrzmy to na przykładzie 4-cyfrowej liczby binarnej (będzie łatwiej). Otóż umówiono się, że najstarszy bit w liczbie będzie tzw. bitem znaku - 0 oznaczać będzie liczbę dodatnią, 1 - liczbę ujemną. No dobrze spróbujmy się z tym pobawić. Weźmy np liczbę 3 - w kodzie dwójkowym jest to: 11. Uzupełnijmy ją do czterocyfrowej liczby dwójkowej: 0011. Zatem najprościej liczba -3 wyglądałaby następująco : 1011 (najstarszy bit 1 czyli ujemna). Zobaczmy czy to jest dobrze. Najprościej sprawdzić to dodając obie liczby do siebie: 3 + (-3) = 0. 0011 1011 ----- 1110 Łoł ... i wyszedł zonk zgodnie z naszą zasadą 3 + (-3) = -6, a powinno być 0. Czyli nasza umowa dotycząca wyglądu liczby ujemnej nadaje się na szczaw. I tu dochodzimy do nieszczęsnego U2. U2 zwany pospolicie kodem uzupełnień do 2 polega na tym, że aby stworzyć liczbę ujemną wszystkie bity naszej liczby negujemy a potem dodajemy do najmłodszego bitu 1. Spróbujmy to zrobić z naszą nieszczęsną 3 0011 - nasza liczba 1100 - liczba po zanegowaniu (zamiana 1<->0) 1101 - po dodaniu do najmłodszego 1. czyli -3 = 1101 Sprawdźmy, jak poprzednio: 0011 1101 ---- 0000 Sukces. Jakie to niesie za sobą problemy. W swojej długiej karierze programistycznej parę razy sam się na nie nabrałem. Weźmy np i wykonajmy w liczbach całkowitych (czery cyfry binarne) następujące działanie: 4 + 5. Z arytmetyki wiemy, że wynosi to 9. Zobaczymy jak policzy komputer: 0100 0101 ---- 1001 binarnie jest to liczba 8, ale my liczymy w liczbach całkowitych, więc ponieważ najstarszy bit jest równy 1 - mamy do czynienia z liczbą ujemną jaką policzmy: 1001 1000 po odjęciu 1 0111 po zanegowaniu: 7 czyli -7 lub inaczej -8 + 0*4 + 0*2 + 1 = -8 +1 = -7 czyli 4 + 5 = -7 Skąd ten problem, ano... przy takim zapisie dla czterocyfrowej liczby całkowitej zakres wynosi od -8 do 7, a wynik nie mieści sie w zakresie i stąd ten błąd. Dlatego też wykonując rózne obliczenia programista musi przewidzieć okoliczność coby w wyniku różnych działań nie przekroczyć zakresu. W naszym przypadku wystarczyłoby operować na bajcie czyli 8 bitach i byłoby po problemie, chociaż nie do końca, bo tutaj zakres jest od -128 do 127 itd. Ćwiczenia: Przedstaw liczby: -115, -41, -100 w zapisie U2 dla liczby całkowitej zapisanej na bajcie. Wykład 6: Zmienny przecinek - Bajtuś - 13.05.2016 Wykład 6: Zmienny przecinek Z poprzednich rozważań wiadomo już jak można zapisać binarnie liczbę całkowitą. Czas na liczby rzeczywiste. I tutaj z pomocą przyszły logarytmy. Ci co coś więcej łykneli matematyki (przez duże M0 wiedzą o co chodzi. W logarytmach wyróżnia sie ceche liczby i mantysę. Dlaczego to wybrano. Ano zobaczmy na przykładzie dwóch licz: 12345678.987654321 i 0.0000000000000000123456. Jaki zapis dawałby podobny wygląd tych liczb coby je wstawić do pamięci (czyli zapisać binarnie). Najlepiej byłoby przedstawić je w notacji naukowej (czyli zapisie lwykładniczo-logarytmicznym). i tak pierwszą w przybliżeniu można było by zapisać jako:0.12345*10 do potęgi 8, a drugą: 0,12345*10 do potęgi -17. O i mamy podobnie wyglądające liczby. To co stoi przed 10 nazwano mantysą liczby (zakres od 0,1) potęga dziesiątki nazwano cechą. Najprostsze liczby zmiennoprzecinkowe można przechować na 3 bajtach. pierwszy cecha zakres od -128 ... 127 mantysa na pozostałych dwóch przedstawiająca 15-bitowa liczbę ze znakiem Dokładność tych liczb była dosyć dobra - biblioteki do operacji na 3 bajtowym zmiennym przecinku opracowano w IEA na potrzeby obliczeń do pomocy operatorom bloku energetycznego w EB. Źródło było publikowane w literaturze i napisane było w języku assembler na procesor Intel 8080. W obecnych językach programowania na zmienny przecinek przyjmuje się od 8 do 16 bajtów. |