Zrozum, jak komputer naprawdę widzi liczby. Konwersje systemów, zapis liczb ujemnych w U2 oraz budowa liczb zmiennoprzecinkowych (znak, cecha, mantysa).
Procesory posługują się wyłącznie stanami napięcia (jest prąd / nie ma prądu), dlatego absolutną podstawą informatyki jest system dwójkowy (binarny – zera i jedynki). System szesnastkowy (heksadecymalny, w którym używamy cyfr 0-9 i liter A-F) powstał z kolei tylko po to, by skrócić potężne ciągi binarne do formatu strawnego dla ludzkiego oka.
Stosujemy algorytm dzielenia całkowitego z resztą. Dzielimy liczbę przez podstawę (2 lub 16), spisujemy reszty, a następnie czytamy je od dołu do góry.
Mnożymy cyfry przez wagi pozycji. Dla binarnego wagi (od prawej) to: 1, 2, 4, 8, 16... Wystarczy zsumować wagi tych pozycji, na których stoi 1!
Każdą cyfrę szesnastkową można zapisać jako dokładnie 4 bity (tzw. tetradę). Np. F to 1111, a 5 to 0101. Zatem 0x5F to po prostu sklejone 01011111!
Jak zapisać minus w pamięci RAM, skoro istnieją tam tylko zera i jedynki? Twórcy komputerów wymyślili, by zarezerwować najstarszy bit (ten najbardziej po lewej) jako bit znaku.
Jeśli najstarszy bit wynosi 0, liczba jest dodatnia. Jeśli 1, jest ujemna. Standardem maturalnym używanym we wszystkich komputerach świata jest kod U2 (Uzupełnień do dwóch). Pozwala on procesorowi dodawać liczby dodatnie i ujemne używając tego samego układu elektronicznego!
Zapisz liczbę dziesiętną wykorzystując 8-bitowy system uzupełnień do dwóch (U2).
Zapisanie ułamka 0.15 jest dla maszyny znacznie trudniejsze niż zapis liczby całkowitej. Służy do tego notacja zmiennoprzecinkowa, opisana uniwersalnym wzorem:
Zapis takiej liczby składa się z 3 nierozerwalnych, połączonych ze sobą bloków:
"Czy każdą ułamkową liczbę dziesiętną da się precyzyjnie zapisać w systemie binarnym?"
Tak jak w systemie dziesiętnym nie da się skończenie zapisać ułamka (mamy ), tak system dwójkowy ma ten sam problem ze zwykłymi ułamkami jak 0.1 czy 0.2! Tworzą one rozwinięcia nieskończone okresowe w systemie binarnym. Ponieważ Mantysa ma ograniczoną pojemność (np. 23 bity), końcówka jest brutalnie ucinana. To dlatego w programowaniu np. w Pythonie działanie 0.1 + 0.2 często wyrzuci Ci wynik 0.30000000000000004.
To tylko jeden z pewniaków. Na kursie przechodzimy przez nie wszystkie, krok po kroku, aż poczujesz ten spokój.
Pomóżcie mi zdać maturę!