KryptoLandia – O Systemach Liczbowych

1 Star2 Stars3 Stars4 Stars5 Stars (15 votes, average: 4.80 out of 5)
Loading...
  •  
  •  
  •  
  •  
  •  
  •  
  •  
OCEŃ & PODAJ DALEJ, niech i inni mają szansę POCZYTAĆ

Znaki i symbole od zawsze towarzyszyły gatunkowi ludzkiemu. Wszak w jakiś sposób trzeba było wyrażać swoje potrzeby i uczucia, jak np. okazywać znaki zainteresowania pięknym paniom czy też dawać znaki innym współtowarzyszom, że jacyś waleczni tubylcy z dzidami zmierzają w ich kierunku. Nowoczesne znaki, takie jak liczby, litery alfabetu czy nawet flagi są powszechnie rozpoznawane, ale wiele symboli wywodzących się ze starożytności trudniej rozszyfrować.

ZODIAK

Znaki występują wszędzie: na ziemi, morzu, powietrzu a nawet w kosmosie. Te najbardziej kosmiczne to znaki na zodiaku. Mówi się, że osoby urodzone pod danym znakiem mają też posiadać specyficzne cechy charakteru i przeznaczenie, uwarunkowane układem gwiazd w czasie ich przyjścia na świat. Zodiak zaczyna się od barana. Dlaczego tak? Teoria mówi, że Zeus miał uratować Frykosa i jego siostrę Helle przed śmiercią z ręki macochy, posyłając do nich złotego barana. Zodiaki wykorzystuje się do stawiania horoskopu, który jak powszechnie wiadomo służy do robienia na nim byznesu. Wypadało by zapytać skąd się wzięły znaki zodiaku, i co mają wspólnego z liczbami.

Znaki zodiaku wzięły się ze spotkania człowieka z Astrologią (nauką o gwiazdach). Już starożytni Babilończycy umieli wskazać na okręgu, po którym pozornie porusza się Słońce, 12 równych części. Słońce w każdej z niej ma pozostawać około miesiąca. Z kolei nazwy gwiazdozbiorów powstawały jeszcze wcześniej w Sumerze. Te dwanaście kosmicznych odcinków posłużyło do powstania 12 znaków zodiaku. Jest to zbiór 12 gwiazdozbiorów, które pierwotnie oznaczały grupy gwiazd (konstelacje), na których tle przesuwało się Słońce w swoim rocznym ruchu. W ciągu całego roku nasze Słońce “przesuwa” się o 360 stopni po nieboskłonie, co daje około 1 stopnia dziennie. Dzieląc całą drogę słońca na dwanaście znaków otrzymujemy trzydzieści stopni pomiędzy znakami, więc możemy dość łatwo policzyć na którym stopniu, i tym samym kiedy, rozpoczyna się czas nowego znaku. I znów ta wszechobecna matematyka i liczby, którą opisaliśmy w poprzedniej części sagi.

KryptoLandia – O Matematyce i Liczbach

To co jednak wydaje się nam teraz oczywiste i proste, nie było takie ani łatwe ani proste dla ówczesnych ludzi, którzy to krok po kroku dokonywali ewolucji liczb i ich zapisu. Zaczęło się od znaków i symboli, na których budowano dalsze cegiełki cywilizacyjne. Wszak w jakiś sposób ludzi musieli zacząć pracować nad koncepcjami zapisu liczb. I tak powstały znaki liczbowe, a z czasem ich rozszerzenia na systemy liczbowe.

ZNAK i SYMBOL

Świat wokół nas jest pełen znaków i symboli. Wiele osób zastanawia się jaka jest różnica pomiędzy znakiem a symbolem. Znak i symbol to nośniki informacji, ale w wielkim skrócie Znak mówi coś… a Symbol reprezentuje coś… Właściwie są to pewnego rodzaju rodzaje szyfrowania. Będąc bardziej precyzyjnym, znak jest tradycyjnie definiowany jako ”coś, co odsyła nas do czegoś innego przez myśl o tym.” Wszystkie otaczające nas znaczące zjawiska (w tym słowa i obrazy) są znakami. Wszystkie doświadczenia są przenoszone przez znaki i od nich zależy komunikacja. Powstała nawet specjalna nauka w tematyce. Semiotyka (zwana również semiologią) to nauka o znakach i symbolach oraz ich wykorzystaniu lub interpretacji.

Sama semiotyka definiuje Znak jako obserwowalny/percypowalny element rzeczywistości, który nie jest istotny ze względu na swoje własne cechy, ale na swoją relację do innego elementu rzeczywistości do którego się odnosi. Znak obrazuje więc związek między tym co znaczące (signifié), a tym co jest znaczone (signifiant), przy czym obie strony są nierozerwalne jak dwie strony kartki papieru. Więź łącząca signifié i signifiant jest dowolna, jako że znak jest dowolny. Można to mniej/więcej interpretować jako zależność, w której element znaczony jest pojęciem, tym co mamy na myśli kiedy wypowiadamy dany znak (np. dane słowo), w odróżnieniu od elementu znaczącego, który jest surowym ciągiem głosek lub znaków graficznych.

Source: http://www.le-gout-de-la-psychanalyse.fr/?p=672

Z kolei Symbol to semantyczny środek stylistyczny, który ma jedno znaczenie dosłowne i różną liczbę znaczeń ukrytych (wielopłaszczyznowość znaczenia). To co przedstawione jest bezpośrednio, posiada też znaczenie głęboko ukrytych i niejasnych treści. Głębszy poziom znaczenia jest sugerowany, lecz niejednoznaczny, otwiera to więc możliwość różnych rozumień i interpretacji. Dla przykładu symbol lwa oznacza nie tylko dany gatunek zwierzęcia, lecz często także siłę lub władzę. Symbole są umownie ustanowionymi jednostkami komunikacyjnymi, dzięki czemu różnią się od znaków, które tworzą związki między znaczonym i znaczącym w jednorodnym kontekście kulturowym. Kulturowo symbol rozumiemy jako zjawisko (obraz, przedmiot), które odsyła nas do pewnej bardziej złożonej części rzeczywistości, która jest trudna do ujęcia w sposób bezpośredni. Symbole mogą mieć różne znaczenia, między innymi wyrażają rzeczywistość duchową. Pochodzenie i znaczenie emblematów, znaków i wizerunków używanych przez wieki ukazuje sposób ich interpretacji w mitach, religii, folklorze, sztuce oraz kulturze współczesnej. Symboli może być nieskończenie wiele. Od prostych kształtów i kolorów do bóstw, stworów mitycznych, świętych rytuałów oraz globalnych marek.

Idąc dalej warto zauważyć, iż Język jest systemem symbolicznym, poprzez który ludzie komunikują się i poprzez który przekazywana jest kultura. Niektóre języki zawierają system symboli używanych do komunikacji pisemnej, podczas gdy inne opierają się tylko na komunikacji mówionej i działaniach niewerbalnych. Z kolei kultura jest zespołem systemów znakowych, czyli schematów zachowań symbolicznych i norm.

Jak już zostało napomniane na straży matematyki stoją liczby, dzielące się na wiele rodzajów. Co ciekawe różnie mogą być one zapisywane, a tą samą liczbę można zapisać na wiele różnych sposobów, w zależności od chęci i potrzeby. Już w starożytnym w Egipcie używano hieroglifów (będących znakami) do oznaczania liczebności. Jeszcze innych znaków używano w Babilonii, a jeszcze innych w starożytnej Grecji i Rzymie. Z czasem opracowane zostały liczby arabskie. W ten oto sposób powstawały zasady tworzenia współczesnych liczb i nowoczesne systemy liczbowe.

SYSTEMY LICZBOWE

Pitagoras miał kiedyś powiedzieć: “Bóg stworzył liczby naturalne, reszta jest dziełem człowieka”. Każda fizyczna wielkość jest reprezentowana w jakiś sposób za pomocą “ilości”. Tą z kolei można podzielić na dwie części: policzalne i niepoliczalne. System liczbowy jest aksjomatem (pewnikiem) i metodologią służącą do kwantyfikacji/pomiaru policzalności. Ponadto, system liczbowy jest również pomocny w ilościowym określeniu rzeczy niemożliwych do policzenia, takich jak mleko/woda, ale są one mierzone za pomocą ml, m3, itp.

System liczbowy definiuje się jak sposób zapisywania liczb oraz zbiór reguł umożliwiających wykonywanie działań na tych liczbach, czyli zbiór reguł jednolitego zapisu i nazewnictwa liczb. Dla każdego systemu liczbowego istnieje skończony zbiór znaków (np. arabskie lub rzymskie), za pomocą których tworzy się liczby. Znaki te zwane cyframi można zestawiać ze sobą na różne sposoby otrzymując nieskończoną liczbę kombinacji. Numer, który dana cyfra reprezentuje, nazywany jest jego wartością. 

Jako że znaków jest bardzo wiele, a te można zestawiać na wiele sposobów tak więc tę samą liczbę można zapisać na bardzo wiele sposobów. Wartość zapisu w każdym tym systemie jest równoważna. Poniżej przykład dla liczby 45 w rozumieniu Kowalskiego.

Source: bogaty.men

Historia liczenia jest stara jak gatunek ludzki. Potrzeba liczenia pojawiła się zapewne wraz z posiadaniem przedmiotów, powstał więc w naturalny sposób pewien prosty system liczenia. Nazywamy go obecnie systemem karbowym, a pojawił się on około 30 000 lat p.n.e. 

Jest on najbardziej prymitywnym systemem liczbowym, gdyż jest to jedynkowy system liczbowy, w którym występuje tylko jeden znak, najczęściej pionowa | kreska. Oryginalnie polegał on na ryciu/nacinaniu karbów na kościach karbów. W systemie tym kolejne liczby są tworzone przez proste powtarzanie tego znaku. Przykładowo trzy w tym systemie jest równe | | | , a pięć to już | | | | | . Systemem takim posługują jeszcze się np. Pigmeje. W przypadku większych liczb zaczyna się grupować znaki, np. po pięć, po dziesięć (cztery równoległe kreski, przekreślone piątą, dwa krzyżowe przekreślenia na dziesiątej pozycji) { | | | | / | | | | X | | | | }. Dało to podstawy koncepcji addytywnego systemu liczbowego. Z czasem ludzie opracowali bardziej złożone systemy, gdzie obecna nauka dzieli je niepozycyjne (addytywne) i pozycyjne systemy liczbowe. 

Systemy addytywne to takie, w których liczby tworzy się przez dodawanie kolejnych symboli i stąd ich nazwa. Systemem addytywnym dziesiątkowym był system egipski, w którym używano oddzielnych hieroglifów dla potęg dziesiątki, aż do siódmej włącznie. Innym przykładem addytywnego systemu jest dobrze znany i wciąż stosowany rzymski system liczbowy z podstawowymi wielokrotnościami 10 i 5, gdzie jego cyfry są reprezentowane jako: I – 1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000. W systemie tym poza dodawaniem, w niektórych przypadkach występuje także odejmowanie. Zaletą systemów addytywnych jest możliwość zapisu nawet dużych liczb (pod warunkiem, że są okrągłe) za pomocą jednego znaku, a wadą złożoność, kłopoty interpretacyjne i zbyt wielka liczba cyfr przy mało okrągłych liczbach. Najbardziej kłopotliwy jest jednak bardzo skomplikowany sposób dokonywania za ich pomocą prostych operacji arytmetycznych.

W starożytnej Mezopotamii stworzony został ciekawy system addytywny, którego ślady spotykamy w życiu codziennym do dziś, mianowicie w pomiarach czasu (podział godziny na 60 minut, a minuty na 60 sekund) oraz kątów i współrzędnych geograficznych (podział kąta na minuty i sekundy kątowe). System ten nazywa się Sześćdziesiątkowy, i miał podstawę 60, gdzie dodatkowo używane były liczby sześć i dziesięć jako pod-bazy. Do zapisu liczb Babilończycy potrzebowali tylko dwóch symboli, dla oznaczenia jedności i dziesiątek. Babilończycy nie znali cyfry zero, dlatego zamiast zera pozostawiali na danej pozycji puste miejsce. Problem pojawiał się wtedy, gdy obok siebie było kilka takich pustych miejsc. Sześć-dziesiątkowy system liczbowy miał bardzo ciekawe właściwości. Otóż liczba 60 jest najmniejszą liczbą, która dzieli się bez reszty przez 2, 3, 4, 5, 6, i można ją także podzielić przez 10, 12, 15, 20 i 30. I tak na przykład jedna godzina może być równomiernie podzielony na sekcje 30 minut, 20 minut, 15 minut, 12 minut, 10 minut, 6 minut, 5 minut, 4 minuty 3 minuty, 2 minuty i 1 minutę. 

System ten jest uważany za hybrydę systemu addytywnego oraz pozycyjnego, czyli takiego gdzie wartość określonej cyfry zależy zarówno od niej samej oraz od jej pozycji w zapisie liczby. Stanowiło to bardzo ważny krok naprzód, ponieważ przed systemami pozycyjnymi ludzie musieli używać różnych symboli do przedstawiania potęg podstawy, a używanie specjalnych znaków dla dziesiątek, setek, tysięcy itd. powodowało, że przeprowadzenie nawet prostych rachunków było bardzo skomplikowane.

Source: https://www.britannica.com/science/positional-numeral-system

Co ciekawe to starożytni Majowie jako pierwsi na Ziemi opracowali fundamentalny dla matematyki system pozycyjny, i stało się to na długo przed wprowadzeniem symboli arabskich w Europie. Podstawą systemu liczbowego Majów była liczba 20 (zapewne liczba palców u rąk i nóg). Do zapisu cyfr Majowie używali tylko trzech symboli. Znak kropki oznaczał jednostkę. Pozioma kreska oznaczała piątkę (tyle mamy palców u ręki), a muszla oznaczała zero. Wartość liczby w tym systemie obliczana jest poprzez mnożenie cyfry przez kolejne potęgi podstawy, czyli 20, i sumowanie iloczynów częściowych. 

Source: bogaty.men

System zapisu liczb, którym posługujemy się dzisiaj, nosi nazwę systemu hindusko-arabskiego, aczkolwiek Arabowie przejęli i rozpowszechnili ten system od Hindusów (z małymi dodatkami). Arabowie na przełomie VI/VII wieku prowadzili świętą wojnę z niewiernymi. W przeciągu stu lat podbili olbrzymie terytorium bogatych krajów Wschodu i Zachodu, gdzie zetknęli się z kulturą znacznie wyższą niż ich własna. W krótkim czasie przyswoili sobie dorobek naukowy ludów podbitych. Przejęcie dorobku matematycznego pozwoliło matematykom islamu osiągnąć znacznie wyższy poziom rozwiązań problemów numeryczno – algebraicznych, a z czasem uczonym islamu udawało się często rozwinąć całe teorie. Wiele uniwersalnych terminów matematycznych pochodzi właśnie od Arabów. Są wśród nich wspomniana już cyfra, ale także algebra, algorytm, pierwiastek czy też sinus. Matematycy islamu znali i umieli stosować wzór, znany dziś jako wzór dwumienny Newtona, wprowadzili układ współrzędnych nazwany później kartezjańskim. Matematyka arabska miała duży wpływ na naukę Europy. Solidny fundament naukowy stworzony przez naukowców islamu sprawił, że matematycy Europy mieli ułatwione życie. Arabowie posłużyli więc jako pośrednicy wiedzy pomiędzy Wschodem a Zachodem. 

System dziesiętny został zapoczątkowany w Indiach w V w. n.e, a rozpowszechnił się w krajach arabskich dzięki matematykowi al-Chwarizmi, który w połowie VIII w. przetłumaczył na arabski indyjską książkę o matematyce. Do rozwoju i popularyzacji systemu dziesiętnego w Europie przyczynił się włoski matematyk Leonardo Fibonacci. Zafascynowany systemem, napisał on w 1202 roku książkę “Liber Abaci“, w której to opisał jak używać arabskich cyfr w systemie dziesiętnym, oraz jak wykonywać na nich działania dodawania, odejmowania itd.

Jest dziewięć znaków hinduskich, oto one: 9, 8, 7, 6, 5, 4, 3, 2, 1. Za pomocą tych znaków i znaku 0, który po arabsku zwie się “sifr”, napisać można wszelką, jaką kto zechce, liczbę. – Leonardo Fibonacci

W systemie stosujemy ograniczoną ilość cyfr, a dziewięć pierwszych cyfr oznaczających wartości od 1 do 9 są przedstawiane jako umowne znaki. Hindusi opracowali również oddzielne nazwy dla kolejnych potęg liczby 10, stworzyli zasadę pozycyjnego przedstawiania liczb oraz wynaleźli zero. W systemie hindusko-arabskim kolejne pozycje licząc od strony prawej posiadają wartości (wagi) będące potęgami liczby 10, którą z tego powodu nazywamy podstawą systemu. Wartość liczby otrzymujemy sumując iloczyny cyfr przez wagi pozycji, na których występują, a wartość cyfry zależy od pozycji w zapisie. Jest to najbardziej znany system pozycyjny.

SYSTEM POZYCYJNY

Systemy liczbowe pozycyjne przedstawiają każdą liczbę jako kombinację ciągu cyfr, a wielkość/wartość tej liczby zależy od położenia/pozycji poszczególnych cyfr wchodzących w jej skład. Nazwa systemu liczenia zawsze bierze się od ilości znaków, które służą do zapisu liczb. Ilość ta nazywana jest Podstawą/Bazą R. System pozycyjny może mieć dowolną podstawę R ≥ 2. Oznacza to, że na dowolnej pozycji w liczbie mamy R różnych symboli (0 do R-1) do zapisania cyfr, które reprezentują dowolną liczbę. Ponieważ istnieje nieskończona ilość liczb, istnieje nieskończona ilość systemów liczbowych. Im więcej znaków występuje w bazie, tym mniej znaków potrzeba aby reprezentować wartość całkowitą liczby. Zatem im większa baza, tym krótszy może być “numer”. Dla przykładu: CF9 (16) = 3321 (10) = 110011111001 (2). Co ważne, wszystkie te “liczby” mają tę samą wartość, ale po prostu używają różnych zestawów znaków (baz), aby ją reprezentować. Zaletą systemów pozycyjnych jest ich klarowność, łatwość dokonywania nawet złożonych operacji arytmetycznych oraz możliwość zapisu dowolnie dużej liczby, jednak do zapisu bardzo dużych liczb (nawet okrągłych) jest potrzebna duża liczba cyfr.

Współcześni ludzie używają systemu pozycyjnego dziesiętnego. W systemie tym podstawą R jest liczba 10 (base-10), a do zapisu liczb stosuje się 10 symboli/cyfr: { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }. Liczby zapisuje się jako ciąg cyfr, z których każda jest mnożnikiem kolejnej potęgi liczby 10. Na przykład cztery w najbardziej na prawo umieszczonej kolumnie oznacza po prostu cztery … w następnej kolumnie oznacza czterdzieści… jedna kolumna dalej i oznacza czterysta … a później cztery tysiące i tak dalej { 4 + 4*10 + 4*100 + 4*1000 = 4444 }. W sytuacji, gdy dana potęga nie jest potrzebna do zapisu danej liczby, zostawia się w zapisie specjalny symbol, a współcześnie jest to cyfra 0. Na przykład liczba 5004. Dlaczego ludzie używają systemu base-10? Może dlatego, że pierwszym liczydłem człowieka były jego palce? 

Source: http://theplctutor.com/decimal.html

Jest wiele systemów liczbowych o rożnych podstawach, bardziej i mniej popularnych, ale wszystkie można wyrazić za pomocą tej samej notacji. Najczęściej spotykaną jest notacja pozycyjna, gdzie ustalamy dodatnią liczbę całkowitą R ≥ 2 (Baza albo Radix ). Możemy wtedy zapisać dowolną liczbę rzeczywistą jako nieskończoną sumę iloczynów, gdzie n jest liczbą całkowitą oznaczająca liczbę cyfr w liczbie, a jest liczbą na danej pozycji, będącą z przedziału dozwolonych cyfr { 0, 1, 2 … R-1 }. Cyfry te są kolejno umieszczane w ściśle określonych pozycjach i są mnożone przez odpowiednią potęgę R.

Source: https://slideplayer.com/slide/2262356/ – Presentation on theme: “Binary Values and Number Systems”

Za pomocą powyższej formuły można zapisać inne popularne systemy liczbowe, np. binarny (base-2) czy szesnastkowy (base-16), gdzie notacja zapisu przedstawiona jest przykładowo jak poniżej.

Source: mobilefish.com

W systemie dziesiątkowym (podobnie jak w systemie dwójkowym i innych) można wykonywać podstawowe operacje arytmetyczne, tzn. dodawać, odejmować, mnożyć i dzielić liczby. Własności działań nie zależą od systemu, to znaczy, że jeśli w systemie dziesiątkowym wykonywane jest dodawanie liczb, to wynik będzie miał taką samą wartość w każdym innym systemie pozycyjnym. Współczesny system pozycyjny jest więc ekwiwalentny wartościowo jak i działownio. Pozwala to na łatwiejszą pracę developerów/informatyków, jako że w informatyce stosowane są systemy dwójkowy (binarny) i szesnastkowy (heksadecymalny).

SYSTEM BINARNY

System dwójkowy, zwany także Binarnym, został odkryty w roku 1703, a jego autorem jest G. Leibniz, niemiecki matematyk, który w 1703 roku pokazał światu sposób zapisywania liczb za pomocą tylko dwóch znaków. Dwójkowy system liczbowy opiera się na wykorzystaniu tylko dwóch cyfr do zapisu wszystkich liczb: 0 oraz 1. Podstawą tego systemu jest więc liczba 2. W systemie dwójkowym można, tak jak w systemie dziesiątkowym, wykonywać podstawowe operacje arytmetyczne, tzn. dodawać, odejmować, mnożyć i dzielić liczby. Więcej informacji i przykładów w poniższym wideo.

Zastanawiałeś się kiedyś drogi Watsonie jakby wyglądało nasze codzienne życie z systemem dwójkowym? Poniżej jakbyśmy dzwonili na policję, zapis brach rejestracyjnych dla samochodu oraz ile zer i jedynek byśmy płacili za chleb w sklepie.

Source: https://towarzystwo.edu.pl/assets/prace_matematyczne/2019_agawin.pdf

Jak doskonale widać w powyższych przykładach system dwójkowy nie jest za wygodny do stosowania w życiu codziennym. Nieczytelność zapisu, długie ciągi cyfr oraz prawie całkowity brak wyczucia rzędu wielkości liczby powoduje, że jest on niepraktyczny w stosowaniu na co dzień. Jest to de facto MATEMATYCZNA WIEŻA BABEL…

Używają go za komputery, smartfony, tablety i inne urządzenia elektroniczne. Dlaczego? Dlaczego pierwsi twórcy komputerów zmarnowali swój czas na tak nieefektywny system liczenia? Otóż z powodu fizycznego ograniczenia sposobu działania komputerów. Tranzystory to podstawowe bloki mikroprocesorów i układów scalonych. Wszystko co robi komputer sprowadza się do kontroli stanu tych tranzystorów (prostych, malutkich przełączników), które mogą być włączane lub wyłączane przy bardzo słabym ładunku elektrycznym/prądzie/napięciu. 0 i 1 są używane właśnie do reprezentowania dwóch dyskretnych napięć podczas budowania obwodów dla komputerów. Okazuje się także, że układy pracujące z napięciami binarnymi możemy budować niezwykle tanio, niezawodnie i skutecznie. Potrafimy je nawet skalować do ogromnych wolumenów, a wszystko z powodu taniości krzemu. 

W celu optymalizacji i zmniejszenia liczby bramek logicznych potrzebnych do wykonania konkretnej operacji logicznej, opracowane zostały nawet specjalne prawa i twierdzenia znane powszechnie jako Algebra Boole’a. Jest to tzw. “matematyka komputerów”, której używa się do analizy bramek i obwodów cyfrowych. Jest to logika pracująca na układach scalonych, działająca na zasadzie logicznej prawdy (True) będącej napięciem wysokim, oraz logicznego fałszu (False), kiedy napięcie jest niskie.

Poniżej ciekawa seria wideo z zakresu działań binarnych w komputerach.

Ze względu na specyfikę architektury komputerów, gdzie często najszybszy dostęp jest do adresów parzystych, albo podzielnych przez 4, 8 czy 16, często używany jest szesnastkowy system liczbowy (base-16). Jest to taki gdzie to wyrażenia liczby używane jest 16 symboli: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F }. Ma ona notację rozpoczynającą się od 0x, przykładowo 31 (10) = 0x1f (16) 

Sprawdza się on szczególnie przy zapisie dużych liczb takich jak adresy pamięci, zakresy parametrów itp. Notacja szesnastkowa istnieje tylko jako forma dla ludzi/deweloperów. Procesory CPU czy też inne części komputera nie mają zielonego pojęcia co to jest system szesnastkowy. Liczby szesnastkowe używane są jedynie w celu wypełnienia luki pomiędzy komputerami wykorzystującymi cyfry binarne, a ludźmi rozumiejącymi liczby inteligentne. Jest ona bardziej przyjazna dla użytkownika i reprezentuje większą gęstość informacji dla ludzi. Łatwo jest grupować w głowie cyfry binarne w heksach (4 bity na cyfrę szesnastkową), a także oszczędza miejsce przy zapisie ręcznym cyfr oraz jest łatwiejszy do odczytania. Przykład ilustrujący to zapis dwójkowy liczby 1101010111010011001000110011000000 (2), która pogrupowana w 4 bity daje zapis heksadecymalny w postaci 0xd5d32330 (16), który jak widać jest o wiele łatwiejszy do przeliterowania, a znacznie mniej prawdopodobne jest, że spowoduje błąd w pisaniu lub kopiowaniu. Tabela konwersji/grupowania pomiędzy systemami jak poniżej. 

Source: mobilefish.com

Aby przeliczyć liczbę z systemu dziesiątkowego na inny, należy wykonać dzielenie z resztą liczby przez podstawę systemu liczbowego, na który jest przeliczana. Iloraz tych liczb ponownie dzielony jest przez podstawę systemu liczbowego, aż do wyniku równego zeru; liczba zapisana w innym systemie ma postać ciągu otrzymanych reszt z dzielenia zapisana od końca. Zainteresowanych odsyłamy do poniższego wideo. 

BIT i BYTE

Współczesne komputery wykorzystują do pracy prąd elektryczny, gdzie wewnątrz mikroczipa elektryczność jest włączana lub wyłączana, co jest reprezentowane przez symbole 1 i 0. Każdy z tych symboli nazywa się BIT. Bit jest najmniejszą jednostką w świecie cyfrowym, odpowiada stanowi komórki pamięci. Bit (BInary digiT) przyjmuje wartość ZERO lub JEDEN.

Ciąg ośmiu bitów (czyli zer i / lub jedynek) nazywamy BAJT(byte).

Source: https://www.flynerd.pl/2019/09/kodowanie-znakow-ascii-unicode-utf-co-to-znaczy.html

Bajt daje aż 256 różnych kombinacji bitów. Stąd pozwala na zapisanie binarne liczb od 0 do 255, przy czym wartość liczby rośnie wykładniczo wraz z ilością bitów, jak poniżej.

  • 1 bajt (8 bitów) to 28 = 256 znaków, czyli zakres od 0 do 255;
  • 2 bajty (16 bitów) to 216 = 65 536 znaków, czyli zakres od 0 do 65535;
  • 4 bajty (32 bity) to 232 = 4 294 967 296 znaków, czyli zakres od 0 do 4 294 967 295; 4294967296
  • 32 bajty ( 128 bitów) to 2128 = 340,282,366,920,938,463,463,374,607,431,768,211,456 znaków.

Ta ostatnia liczba to coś jak liczba liczba wszystkich komórek w 77 371 252 455 336 267 181 195 264 ludzkich ciałach. Co ciekawe systemy kryptograficzne używają dość często 64 bajtów (256 bitów) to 2256, a nawet 512 bitów zapisu (2512).

Dzisiejsze komputery są projektowane jako 64 bitowe. Jak to się ma pierwszych komputerów? Polecam poniższe video, które w bardzo klarowny sposób pokazuję skok pomiędzy dziś a wtedy.

Ponieważ komputery operują na liczbach, a konkretnie na liczbach zapisywanych w systemie binarnym (dwójkowym), więc wszystkie informacje przetwarzane przez komputer muszą być liczbami. Jak więc radzi sobie komputer z przetwarzaniem tekstu np. tego wprowadzanego za pomocą klawiatury? 

ASCII

Komputer zwyczajnie zamienia znaki tekstu na ciąg znaków graficznych. Jeżeli każdemu znakowi graficznemu przypiszemy jednoznacznie liczbę to uzyskujemy w ten sposób możliwość wyrażenia dowolnego tekstu w postaci ciągu liczb. Takie przyporządkowanie zostało opracowane i przyjęte jako standard kodowania znaków i nosi nazwę kody ASCII . 

Co się kryje za hasłem “ASCII”? ASCII jest skrótem od American Standard Code for Information Interchange. Kody ASCII są to kody, które przypisują poszczególnym liczbom litery alfabetu angielskiego (duże i małe), cyfry, znaki interpunkcyjne, symbole specjalne, symbole matematyczne, proste znaki graficzne. Kod ASCII został stworzony w 1963 roku przez agencję American Standards Association (ASA), która zmieniła swoją nazwę w 1969 na American National Standards Institute (ANSI).

Podstawowa tablica znaków ASCII wykorzystuje 7 bitów do zapisu znaku graficznego. Ten zakres kodów wykorzystujący 7 bitów (ósmy bit jest wtedy zerem) jest ogólnoświatowy i dzięki temu klawiatura wykonana gdziekolwiek na świecie będzie kompatybilna z komputerem stojącym na naszym biurku. Zapis na 7 bitach oznacza, iż możliwe jest zapisanie 128 znaków jako liczby (27=128) , przy czym każdej literze przypisana jest liczba od 0 do 127. Kody od 33 do 126 to duże i małe litery angielskie, cyfry, znaki przestankowe (średnik, przecinek, kropka itd.), nawiasy oraz znaki specjalne takie jak procent czy dolar. Kody od 0-32 i 127 są to znaki niedrukowalne i służą do sterowania strumieniem danych, które używane są do przesyłania informacji pomiędzy komputerami/urządzenia np. zmiana wiersza, sygnał dźwiękowy itd.

Dzięki tablicom ASCII komputer wie, że jeśli ma wyświetlić znak 65 to jest to znak ‘A’, a małe ‘a’ to liczba 97, a słowo Słowo Dom będzie rozumiane przez komputer jako: 01000100 01101111 01101101. Podstawowe kody ASCII jak poniżej.

Source: https://www.flynerd.pl/2019/09/kodowanie-znakow-ascii-unicode-utf-co-to-znaczy.html

W 1981 roku IBM opracował rozszerzenie kodu ASCII do standardu 8 bitów. Dało to możliwość utworzenia rozszerzonej tablicy dodając interpretację kolejnych 128 znaków. Pierwsze 127 znaków jest takie samo dla wszystkich standardów. Kody od 128 do 255 to tzw. “rozszerzony zestaw znaków” zawierający kody charakterystyczne dla danego regionu np. kody liter występujących tylko w języku polskim: ą, ę, ó, ł, ń , albo wprowadzające nowe symbole matematyczne. Istnieje wiele różnych tego typu tablic. Pełną tabelę znaków, kodów, symboli i znaków ASCII można znaleźć przykładowo na stronie

Komputery używają kodów ASCII do reprezentacji tekstu, co pozwala na przesyłanie danych z jednego komputera do drugiego. Kryptografia też używa tekstu, ale w kryptografii ma on jednak nieco inne znaczenie. Używany jest np. do zapisu kluczy i adresów.

BASE58

Wszystkie dane są przechowywane w surowym formacie binarnym na komputerach, które są zapisywane i odczytywane przez różne formaty kodowania. Z powyższej tabeli ASCII wynika, iż aby zapisać tylko litery i cyfry wystarczy tylko 62 znaki (base62). Jest to tzw. alfanumeryczny alfabet, a dodatkowo rozszerzony o znaki + i / otrzymujemy system base64. Base64 został zaprojektowany do przenoszenia danych zapisanych w formatach binarnych przez kanały, które w niezawodny sposób obsługują tylko i wyłącznie zawartość tekstową. Base64 jest jednym z najbardziej popularnych formatów kodowania danych reprezentacyjnych. Base64 koduje je dla wygodnej czytelności i parsowania/przetwarzania. Właściwie tylko tyle wystarczy do zapisu tekstu. 

W 2009 Satoshi Nakamoto (anonimowy twórca Bitcoina) na potrzeby Bitcoina przedstawił bardziej optymalny dla ludzi system: Base58, który został zoptymalizowany tak aby był w bardziej przyjaznym dla użytkownika formacie. Celem było uzyskanie poziomu kompresji danych porównywalnego z Base64, ale ułatwienie czytania ludziom poprzez wyeliminowanie znaków, które wyglądają podobnie:

  • 0 (zero) i O (duże o),
  • I (duże i) i l (małe litery L).

Dla zapewnienia czytelności pominięto również znaki alfanumeryczne + (plus) i / (ukośnik). Poniżej przedstawione są dozwolone znaki w systemie base58.

base58 = 123456789ABCDEFGH JKLMN PQRSTUVWXYZabcdefghijk mnopqrstuvwxyz

System base58 charakteryzuje się dwiema zaletami:

  • Daje duży zestaw znaków, więc możesz reprezentować duże liczby w krótszym formacie;
  • Pomija niezręczne znaki, aby uchronić Kowalskiego przed popełnianiem błędów podczas przepisywania.

Każdy bajt ma wartość od 0 do 57 map do powyższego alfabetu w następujący sposób:

Source: https://tools.ietf.org/id/draft-msporny-base58-01.html

Jak konwertować z systemu np. base10 na base58? W standardowy sposób modulo: Zasadniczo, dzielisz swój numer przez 58, biorąc resztę na każdym etapie drogi, aby uzyskać następny indeks znaków, kończąc, gdy nie ma resztek. Przykład jak poniżej:

base10 = 123456789

123456789 % 58 = 19
2128565 % 58 = 23
36699 % 58 = 43
632 % 58 = 52
10 % 58 = 10

base58 = [10][52][43][23][19] = B u k Q L

Przykłady enkoderów i dekoderów Base 58 online jmożna znaleźć jak poniżej:

Satoshi chciał umożliwić konwertowanie często używanych elementów w bitcoin, takich jak klucze prywatne i adresy, do formatu, który jest łatwy do udostępnienia i łatwy w użyciu dla każdego. Można myśleć o tym jako o skrócie, np. podczas kodowania lub transkrybowania, za pomocą którego prosty zapis kilkudziesięciu znaków może zastąpić pozornie niekończącą się listę cyfr. Przykładowy adres BTC (w base58) oraz jego hex, decimal i binarne odpowiedniki:

(58) 3Beer3irc1vgs76ENA4coqsEQpGZeM5CTd

(16) 56 D3 ED 4C F5 5D C6 75 2A 12 D3 09 1D 43 6E F8 F0 F9 82 FF 8D AD 63 31 40

(10) 86 211 237 76 245 93 198 117 42 18 211 9 29 67 110 248 240 249 130 255 141 173 99 49 64

( 2) 01010110 11010011 11101101 01001100 11110101 01011101 11000110 01110101 00101010 00010010 11010011 00001001 00011101 01000011 01101110 11111000 11110000 11111001 10000010 11111111 10001101 10101101 01100011 00110001 01000000

Jak widać Pan Satoshi postarał się i ułatwił Kowalskiemu życie.

W kolejnej części przejdziemy do podstaw kryptografii, będącej podstawą krypto-walut, i poznamy główne algorytmy stojące za magią krypto-walut.

 The END

Bmen


Ps. Jeżeli podobał wam się artykuł, zachęcamy do ocenienia, skomentowania, podzielenia się przemyśleniami i za-linkowania lub podzielenia się via media.


DISCLAIMER / UWAGA! Niniejszy opracowanie (jak każde inne na tym blogu) ma charakter amatorskiej analizy, która ma na celu jedynie ogólnie przybliżenie czytelnikowi omawianego tematu. Analiza ta jest efektem dociekań autora, i jest na tyle szczegółowa/precyzyjna, na ile autor uznał za stosowne. Jest ona tylko prywatną opinią autora, nie stanowi żadnych rekomendacji inwestycyjnych, i nie może służyć jako podstawa decyzji inwestycyjno-biznesowych. W celach głębszego zrozumienia tematu, bądź też zdobycia profesjonalnej informacji, autor zachęca do sięgnięcia po prace specjalistów z danej dziedziny. Sam autor, na własne potrzebny, zebrał podstawowe informacje w tematyce po to, aby móc wyrobić sobie poglądy na interesujące go zagadnienia, a przetrawione wnioski są owocem tej pracy. 

Niniejszym Team Bmen-ów zastrzega, że publikowane informacje i tezy są wolnymi przemyśleniami amatorów, na podstawie których nie mogą być konstruowane żadne roszczenia, przyrzeczenia, obietnice te rzeczowe czy też matrymonialne. W przypadku oblania się gorącą kawą lub zakrztuszenia rogalem podczas czytania tekstu Team nie bierze za to żadnej odpowiedzialności i renty płacić nie będzie!! 


LITERATURA

  1. https://presume.pl/znak-zodiaku-co-wlasciwie-okresla
  2. https://www.focus.pl/artykul/skad-sie-wziely-znaki-zodiaku
  3. https://strzelce.diecezja.swidnica.pl/2019/03/27/czy-wiesz-co-nosisz/
  4. https://semiomiks.blogspot.com/2010/10/znak.html
  5. https://www.quora.com/Semiotics-What-is-the-difference-between-a-sign-and-a-symbol
  6. https://en.wikipedia.org/wiki/Positional_notation
  7. https://youtu.be/KXUTUhERJUE
  8. https://gozych.edu.pl/informatyka/kodowanie/kod-liczbowy-ascii/
  9. https://www.wikiwand.com/pl/ASCII
  10. https://www.flynerd.pl/2019/09/kodowanie-znakow-ascii-unicode-utf-co-to-znaczy.html
  11. https://tools.ietf.org/id/draft-msporny-base58-01.html
  12. https://hackernoon.com/learn-more-about-data-encoding-base64-vs-base58-9q263ehf
  13. https://www.dcode.fr/base-n-convert 
  14. https://www.electronics-tutorials.ws/boolean/bool_6.html
  15. https://www.youtube.com/watch?v=Xpk67YzOn5w
  16. https://eduinf.waw.pl/inf/hist/001_komp/
  17. https://towarzystwo.edu.pl/assets/prace_matematyczne/2019_agawin.pdf
  18. https://networkustad.com/2019/06/19/positional-number-system-and-examples/
 

Brak komentarzy.



Skomentuj