Komputery nie rozumieją słów i cyfr tak, jak robią to ludzie. Nowoczesne oprogramowanie pozwala użytkownikowi końcowemu zignorować to, ale na najniższych poziomach komputera wszystko jest reprezentowane przez binarny sygnał elektryczny, który rejestruje się w jednym z dwóch stanów: włączony lub wyłączony. Aby uzyskać zrozumienie skomplikowanych danych, komputer musi zakodować go w postaci binarnej.
Binary to system liczb bazowych 2. Podstawa 2 oznacza, że istnieją tylko dwie cyfry-1 i 0, które odpowiadają stanom włączania i wyłączania komputera. Prawdopodobnie znasz bazę 10 - system dziesiętny. Dziesiętny używa dziesięciu cyfr, które wahają się od 0 do 9, a następnie owija się, tworząc dwucyfrowe liczby, z których każda jest warta dziesięć razy więcej niż ostatnia (1, 10, 100 itd.). Binary jest podobna, każda cyfra jest warta dwa razy więcej niż poprzednia.
W systemie binarnym pierwsza cyfra jest warta 1 w systemie dziesiętnym. Druga cyfra jest warta 2, trzecia warta 4, czwarta warta 8, i tak dalej - podwojenie za każdym razem. Dodanie tych wszystkich daje liczbę dziesiętną. Więc,
1111 (w systemie binarnym) = 8 + 4 + 2 + 1 = 15 (w systemie dziesiętnym)
Rozliczając 0, daje nam to 16 możliwych wartości dla czterech bitów binarnych. Przejdź na 8 bitów i masz 256 możliwych wartości. Zajmuje to dużo więcej miejsca do reprezentowania, ponieważ cztery cyfry dziesiętne dają nam 10 000 możliwych wartości. Może się wydawać, że przechodzimy przez te wszystkie trudności związane z wymyślaniem naszego systemu liczenia tylko po to, aby uczynić go bardziej klarownym, ale komputery rozumieją binarnie o wiele lepiej niż rozumieją dziesiętnie. Oczywiście, plik binarny zajmuje więcej miejsca, ale jesteśmy zatrzymywani przez sprzęt. I dla niektórych rzeczy, takich jak przetwarzanie logiczne, plik binarny jest lepszy niż dziesiętny.
Jest inny system bazowy, który jest również używany w programowaniu: szesnastkowy. Chociaż komputery nie działają w systemie szesnastkowym, programiści używają go do reprezentowania adresów binarnych w formacie czytelnym dla człowieka podczas pisania kodu. Dzieje się tak, ponieważ dwie cyfry szesnastkowe mogą reprezentować cały bajt, osiem cyfr w postaci binarnej. Szesnastkowy używa 0-9 jak dziesiętny, a także litery od A do F, aby reprezentować dodatkowe sześć cyfr.
Krótka odpowiedź: sprzęt i prawa fizyki. Każda liczba w twoim komputerze jest sygnałem elektrycznym, a we wczesnych dniach przetwarzania danych sygnały elektryczne były znacznie trudniejsze do zmierzenia i sterowania bardzo precyzyjnie. Bardziej sensowne było rozróżnianie "stanu" reprezentowanego przez ładunek ujemny - i "stanu" - reprezentowanego przez ładunek dodatni. Dla tych, którzy nie są pewni, dlaczego "ĘOoff" jest reprezentowany przez ładunek dodatni, to dlatego, że elektrony mają ładunek ujemny - więcej elektronów oznacza więcej prądu z ładunkiem ujemnym.
Tak więc wczesne komputery wielkości pokoi używały binarnie do budowania swoich systemów, i chociaż używały dużo starszego, większego sprzętu, zachowaliśmy te same podstawowe zasady. Współczesne komputery używają tak zwanego tranzystora do wykonywania obliczeń za pomocą binarnego. Oto schemat tego, jak wygląda tranzystor polowy (FET):
Zasadniczo pozwala on tylko na przepływ prądu od źródła do odpływu, jeśli w bramce znajduje się prąd. Tworzy to przełącznik binarny. Producenci mogą zbudować te tranzystory niezwykle małe - aż do 5 nanometrów lub około dwóch nici DNA. Tak działają współczesne procesory, a nawet one mogą cierpieć z powodu różnic między stanami włączania i wyłączania (choć wynika to głównie z ich nierealnych rozmiarów, podlegających dziwaczności mechaniki kwantowej).
Więc może myślisz, "dlaczego tylko 0 i 1? Czy nie możesz po prostu dodać kolejnej cyfry? "Chociaż niektóre z nich sprowadzają się do tradycji budowania komputerów, dodanie kolejnej cyfry oznaczałoby, że musielibyśmy rozróżnić różne poziomy prądu - nie tylko," off "i" - mówi - ale także stwierdza: "trochę" - i "dużo".
Problem polega na tym, że jeśli chcesz używać wielu poziomów napięcia, potrzebujesz sposobu na łatwe wykonywanie obliczeń z nimi, a sprzęt do tego nie jest opłacalny jako zamiennik dla obliczeń binarnych. Rzeczywiście istnieje; nazywa się to komputer trójskładnikowy i działa już od lat pięćdziesiątych, ale to właśnie tam zatrzymano rozwój. Logika trójprzewodnikowa jest o wiele bardziej wydajna niż binarna, ale jak dotąd nikt nie ma skutecznego zamiennika dla tranzystora binarnego, a przynajmniej nie wykonano żadnej pracy nad ich rozwojem w tych samych małych skalach, co binarnie.
Powód, dla którego nie możemy użyć logiki trójskładnikowej, sprowadza się do tego, że tranzystory są ułożone w jeden komputer - coś, co nazywa się "gates".-i jak są używane do wykonywania matematyki. Bramki pobierają dwa wejścia, wykonują na nich operację i zwracają jedno wyjście.
To prowadzi nas do długiej odpowiedzi: binarna matematyka jest znacznie łatwiejsza dla komputera niż cokolwiek innego. Logika logiczna z łatwością odwzorowuje układy binarne, przy czym wartość Prawda i Fałsz są reprezentowane przez włączanie i wyłączanie. Bramy w twoim komputerze działają w oparciu o logikę boolowską: pobierają dwa wejścia i wykonują na nich operacje takie jak AND, OR, XOR i tak dalej. Dwa wejścia są łatwe w zarządzaniu. Gdybyś miał wykreślić odpowiedzi dla każdego możliwego wejścia, miałbyś to, co jest znane jako tablica prawdy:
Tabela prawdy binarnej operująca na logice logicznej będzie miała cztery możliwe wyjścia dla każdej operacji podstawowej. Ale ponieważ bramy trójskładnikowe przyjmują trzy wejścia, trójskładnikowa tablica prawdy miałaby 9 lub więcej. Podczas gdy system dwójkowy ma 16 możliwych operatorów (2 ^ 2 ^ 2), system trójskładnikowy miałby 19683 (3 ^ 3 ^ 3). Skalowanie staje się problemem, ponieważ podczas, gdy trójskładnik jest bardziej wydajny, jest on również wykładniczy bardziej złożony.
Kto wie? W przyszłości moglibyśmy zacząć postrzegać komputery trójskładnikowe, przesuwając granice binarne do poziomu molekularnego. Na razie jednak świat będzie nadal działał na zasadzie binarnej.
Źródło zdjęć: spainter_vfx / Shutterstock, Wikipedia, Wikipedia, Wikipedia, Wikipedia