Jak bity i bajty działają w pamięci komputera

3

Jeśli masz komputer dłużej niż przerwa na kawę, prawdopodobnie zetknąłeś się z terminami bity i bajty. Są to standardowe jednostki miary pamięci o dostępie swobodnym (RAM), pojemności dysku twardego i rozmiarów plików w każdym nowoczesnym menedżerze plików.

Można usłyszeć w reklamach informację, że maszyna jest wyposażona w 32-bitowy procesor Pentium, ma 64 megabajty pamięci RAM i 2,1 gigabajta miejsca na dysku twardym. Specyfikacje te regularnie pojawiają się w instrukcjach technicznych i materiałach szkoleniowych. Zrozumienie, co właściwie oznaczają te terminy, pomoże Ci przestać zgadywać i zacząć wiedzieć na pewno.

Dziesiętne

Aby zrozumieć, czym jest bit, porównaj go z czymś znajomym: liczbami.

Cyfra to pojedyncza pozycja dla wartości od 0 do 9. Łączymy je, aby uzyskać większe liczby. Weźmy liczbę 6357. Składa się ona z czterech cyfr. Siedem należy do kategorii „jedynki”. Piątka należy do kategorii dziesiątek. Trójka należy do kategorii setek. Sześć należy do kategorii „tysiące”.

Można to zapisać wprost:

(6 * 1000) + (3 * 100) + (5 * 10) + (7 * 1) = 6000 + 300 + 50 + 7 = 6357

Lub użyj potęgi 10. Używając symbolu karetki (^) do wskazania „w stopniu”, wygląda to tak:

(6 * 10^3) + (3 * 10^2) + (5 * 10^1) + (10^0) = 6000 + 300 + 50 + 7 = 6357

Każda cyfra to miejsce na następną większą potęgę liczby 10. Pierwsza cyfra zaczyna się od 10^0.

Wydaje się to normalne, ponieważ na co dzień używamy dziesiętnego systemu liczbowego. Prawdopodobnie istnieje, ponieważ ludzie mają dziesięć palców. Gdybyśmy ewoluowali z ośmioma palcami, prawdopodobnie używalibyśmy systemu ósemkowego. Można zastosować dowolny system liczbowy. Różne powody mają sens w różnych kontekstach.

Komputery używają binarnego systemu liczbowego. Jest on również znany jako system liczb binarnych.

System binarny i bajt 8-bitowy

Komputery używają systemu binarnego, ponieważ jest tani. Można by zbudować komputer w systemie dziesiętnym. Byłoby to po prostu niewiarygodnie drogie. Sprzęt binarny jest stosunkowo niedrogi.

Dlatego komputery używają liczb binarnych. Używają cyfr binarnych zamiast miejsc dziesiętnych. Słowo bit jest skrótem od „Binary digIT”.

Cyfry dziesiętne mają 10 wartości: od 0 do 9. Bity mają tylko dwie wartości: 0 i 1. Liczba binarna to po prostu ciąg jedynek i zer, na przykład 1011.

Aby znaleźć wartość, użyj potęgi 2 zamiast potęgi 10.

(1 * 2^3) + (0 * 2^2) + (1 * 2^1) + (1 * 2^0) = 8 + 0 + 2 + 1 = 11

Każdy bit reprezentuje rosnącą potęgę liczby 2. Liczenie w systemie binarnym jest proste. Oto porównanie liczb dziesiętnych i binarnych od 0 do 20:

  • 0 = 0
  • 1 = 1
  • 2 = 10
  • 3 = 11
  • 4 = 100
  • 5 = 101
  • 6 = 110
  • 7 = 111
  • 8 = 1000
  • 9 = 1001
  • 10 = 1010
  • 11 = 1011
  • 12 = 1100
  • 13 = 1101
  • 14 = 1110
  • 15 = 1111
  • 16 = 10000
  • 17 = 10001
  • 18 = 10010
  • 19 = 10011
  • 20 = 10100

Zwróć uwagę na przeniesienie rozładowania. Liczba 2 to pierwszy raz, kiedy system binarny wykorzystuje przeniesienie. Jeśli bit ma wartość 1 i dodasz 1, stanie się 0, a następny bit stanie się 1. Przejście z 15 na 16 powoduje przepełnienie czterech bitów, zamieniając 1111 na 10000.

Beats rzadko podróżują samotnie. Są one pogrupowane w zestawy po 8 bitów. Grupy te nazywane są bajtami.

Dlaczego w bajcie jest osiem bitów? To jakby zapytać, dlaczego w tuzinie jest 12 jajek. W ciągu ostatnich 50 lat ludzie doszli do 8 bitów metodą prób i błędów.

8 bitów może reprezentować 256 wartości. Mają wartość od 0 do 255.

  • 0 = 00000000
  • 1 = 00000001
  • 2 = 00000010
    *…
  • 254 = 11111110
  • 255 = 11111111

W artykule Jak działają płyty CD dowiesz się, że płyta CD wykorzystuje 2 bajty na próbkę. To jest 16 bitów. Każda próbka może mieć wartość od 0 do 65

Jak ASCII i matematyka binarna przechowują Twoje dane

Tekst to nie magia. To tylko liczby w masce.

Kiedy wpisujesz zdanie, komputer nie widzi liter. Widzi wartości binarne. W szczególności opiera się na standardowym zestawie znaków ASCII, aby przekształcić naciśnięcia klawiszy w dane. W tym systemie każda wartość binarna od 0 do 127 jest odwzorowywana na określony znak. Większość systemów rozszerza ten zestaw do 256 wartości, wykorzystując pełny bajt, dodając litery akcentowane i symbole dla języków międzynarodowych.

Ale podstawa leży w pierwszych 128 kodach.

Skorzystaj z edytora tekstu Notatnika w systemie Windows 95/98. Jeśli wpiszesz „Cztery punkty i siedem lat temu”, program przydzieli dokładnie jeden bajt pamięci dla każdego znaku. Obejmuje to spacje między słowami. Spacja to kod ASCII 32. Kropka to 46. Litera „A” to 65.

Spróbuj sam.

Utwórz plik o nazwie getty.txt. Wpisz to zdanie. Zapisz to. Otwórz Eksplorator plików. Rozmiar pliku wynosi 30 bajtów. Dlaczego? Ponieważ ma 30 znaków. Dodaj jedno słowo. Rozmiar pliku zwiększy się o liczbę liter w tym słowie. Jest to bezpośredni stosunek 1:1.

Otwórz plik jako surowe dane, a litery znikną. Zobaczysz liczby.

Są to dziesiętne reprezentacje kodów ASCII. Dla dokładności technicznej: maszyna widzi tylko kod binarny. 32 zmienia się na „00100000”. Ale logika pozostaje ta sama: każdy bajt zawiera jeden znak.

Pierwsze 32 wartości (od 0 do 31) nie są literami. To są kody kontrolne. Powrót karetki. Kanał liniowy. Sygnał dźwiękowy. Znaki drukowalne zaczynają się od liczby 32. Po nich następują znaki interpunkcyjne. Potem liczby. Potem wielkie litery. Następnie małymi literami. Pełną tabelę można znaleźć na Unicode.org, ale zasada jest prosta: przechowywanie tekstu to po prostu lista tych liczb całkowitych.

Zrozumienie przedrostków bajtów i matematyki binarnej

Gdy zdasz sobie sprawę, że dane to tylko bajty, napotykasz nowy problem: skalę.

Bajt to za mało. Większość plików jest ogromna. Dlatego potrzebujemy konsol.

Do oznaczenia rzędu wielkości używamy przedrostków bajtowych. Kilo, mega, giga. To nie są tylko określenia marketingowe. Są to mnożniki binarne.

  • Kilo (K): $2^{10}$ = 1024 bajty
  • Mega (M): $2^{20}$ = 1 048 576 bajtów
  • Giga (G): $2^{30}$ = 1 073 741 824 bajtów
  • Tera (T): $2^{40}$ = ~1,1 biliona bajtów
  • Peta (P): $2^{50}$ = ~1,1 biliarda bajtów
  • Exa (E): $2^{60}$ = ~1,1 tryliona bajtów
  • Zetta (Z): $2^{70}$
  • Yotta (Y): 2 $^{80}$

Kilogram to około tysiąc. Mega-milion. Giga – miliard.

Kiedy ktoś mówi, że jego dysk twardy ma „2 gigabajty”, ma na myśli 2 $ \time 2^{30}$ bajtów. Dokładnie 2 147 483 648 bajtów.

Brzmi to abstrakcyjnie, dopóki nie zwizualizujesz tych danych. Standardowa płyta CD mieści około 650 megabajtów. Trzy dyski zajmują dysk o pojemności 2 GB. Powszechnie stosowane są bazy danych wielkości terabajtów. Bazy danych wielkości petabajtów prawdopodobnie istnieją w dużych agencjach rządowych. Skala rośnie wykładniczo.

To prowadzi nas do matematyki binarnej.

Działa podobnie jak dziesiętny, z jednym ścisłym ograniczeniem: każdy bit może wynosić tylko 0 lub 1.

W systemie dziesiętnym liczymy od 0 do 9. Kiedy dotrzemy do 9 i dodamy 1, przenosimy 1 na następne miejsce. W systemie binarnym wszystko działa tak samo, ale transfer jest szybszy.

Weźmy dodawanie dziesiętne:

Zaczynamy po prawej stronie. 2 $ + 1 = 3 $. Następna pozycja: 5 $ + 5 = 10 $. Napisz 0, przelej 1. Dalej: 4+7+1(przelew)=12$. Zapisz 2, prześlij 1. Wynik: $0+0+1=1$. Wynik: 1203.

Teraz system binarny.

Prawy bit: $0+1=1$. Nie ma transferu.
Drugi bit: 1 $ + 1 = 10 $. Napisz 0, prześlij 1.
Trzeci bit: 0+1+1(przeniesienie)=10$. Napisz 0, prześlij 1.
Czwarty bit: $0+0+1(przeniesienie)=1$.

Wynikiem jest „1001”. W systemie dziesiętnym jest to 9. Obliczenia są identyczne. Tyle, że reprezentacja opiera się na systemie liczbowym o podstawie 2 zamiast 10.

Podsumowanie

Bity są cyframi binarnymi. Są równe 0 lub 1.
Bajty to grupy 8 bitów.
Tekst to po prostu sekwencja bajtów odwzorowanych na kody ASCII.
Rozmiar pamięci mierzony jest w potęgach binarnych 1024.

To nie jest trudne. To tylko fundament.

Aby głębiej zagłębić się w logikę Boole’a i implementację bramek logicznych, przyjrzyj się, jak działa dodawanie Boole’a. Reszta to liczenie binarne.