Liczby całkowite (zapis komputerowy)
Z Wikipedii
Liczby całkowite mogą zostać zapisane w pamięci komputera w rozmaity sposób. Obecnie dla liczb naturalnych najczęściej spotykany jest pozycyjny dwójkowy system liczbowy. Inne znane sposoby zapisu to kod Graya i BCD.
[edytuj] Grupowanie informacji
Na pamięć komputera można spojrzeć jak na komórki. W każdej z nich trzymany jest elementarny kwant informacji zwany bitem. W praktyce komórki te grupuje się w większe całości zwane, w zależności od rozmiaru, bajtami (8 bitów), słowami (zawierającymi 2 lub więcej bajtów) lub jeszcze inaczej.
Kolejność bitów w bajtach, bajtów w słowach, itp. może być ustalona na dwa podstawowe sposoby:
- little endian - "najmłodszy" bit/bajt na początku, tzn. pod najniższym adresem, "najstarszy" bit/bajt na końcu.
- big endian - na odwrót
[edytuj] Sposoby zapisu liczb ujemnych
Dowolny sposób zapisu liczb ze znakiem wymaga co najmniej jednego dodatkowego bitu - bitu znaku. Zazwyczaj używa się najstarszego bitu dla danego rozmiaru komórki pamięci.
- Najbardziej naturalnym dla człowieka sposobem uwzględnienia znaku jest potraktowanie najstarszego bitu jako bitu znaku, a pozostałych bitów jako wartości bezwzględnej liczby (zapis znak-moduł. Przykład (zapis pozycyjny na czterech bitach):
- 01012 to 510
- 11012 to -510
- "Dopełnienie do jedynki" polega na odwróceniu wszystkich bitów odpowiedniej liczby dodatniej. Przykład:
- 01012 to 510
- 10102 to -510
W tym zapisie zero można przedstawić na dwa sposoby jako komórkę o wszystkich bitach ustawionych (1) lub o wszystkich bitach wyzerowanych. Dopełnienie do jedynki jest używane w maszynach PDP-1 i UNIVAC 1100.
- Najczęściej używanym (zwłaszcza w komputerach osobistych) jest zapis "dopełnienia do dwóch". Zmiana znaku polega w nim na odwróceniu wszystkich bitów liczby wyjściowej i dodaniu jedynki - w tej operacji pośredniej liczba jest zawsze traktowana jakby była dodatnia. Okazuje się, że najstarszy bit można zinterpretować jako bit znaku. Przykład:
- 01012 to 510
- 10112 to -510
Ten zapis pozwala uniknąć niejednoznacznej postaci zera oraz ułatwia dodawanie. Dodawanie w tym zapisie polega na potraktowaniu liczb jako dodatnich, dodaniu, a następnie pominięciu przeniesienia z najstarszego bitu. Metoda daje niewłaściwe wyniki przy dodawaniu dwóch dużych liczb o tym samym znaku. Ta sytuacja jest podobna do dodawania dużych liczb bez znaku, tzn. gdy wynik dodawania nie mieści się już w komórce pamięci o rozmiarze takim jak rozmiar komórki liczb dodawanych.
[edytuj] Zobacz też
- Liczby całkowite
- Typy danych
- Typy danych całkowitych w językach C, C++: short int, int, long int, long long int
- Typ danych całkowitych w Pascalu: integer