Liczba całkowita (typ danych): Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m int.
Linia 7:
 
Kolejność bitów w bajtach, bajtów w słowach, itp. może być ustalona na dwa podstawowe sposoby:
*[[Kolejność bajtów|little endian]] - "najmłodszy" bit/bajt na początku, tzn. pod najniższym adresem, "najstarszy" bit/bajt na końcu.
*[[Kolejność bajtów|big endian]] - na odwrót
 
===Sposoby zapisu liczb ujemnych===
Dowolny sposób zapisu liczb ze [[znak liczby|znakiem]] wymaga co najmniej jednego dodatkowego bitu - [[bit znaku|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 [[Kod znak-moduł|znak-moduł]]). Przykład (zapis pozycyjny na czterech bitach):
* 0101<sub>2</sub> to 5<sub>10</sub>
* 1101<sub>2</sub> to -5–5<sub>10</sub>
 
W tym zapisie zero można przedstawić na dwa sposoby: kasując wszystkie bity oraz ustawiając jedynie bit znaku.
Linia 21:
"[[Kod uzupełnień do jedności|Dopełnienie do jedynki]]" polega na odwróceniu wszystkich bitów odpowiedniej liczby dodatniej. Przykład:
* 0101<sub>2</sub> to 5<sub>10</sub>
* 1010<sub>2</sub> to -5–5<sub>10</sub>
 
Również w tym zapisie zero można przedstawić na dwa sposoby: jako komórkę o wszystkich bitach ustawionych 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 "[[Kod uzupełnień do dwóch|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:
* 0101<sub>2</sub> to 5<sub>10</sub>
* 1011<sub>2</sub> to -5<sub>10</sub>
Linia 36:
 
===Liczby całkowite w C, C++===
W [[C (język programowania)|C]], [[C++]] zdefiniowano 8 [[typ danych|typów danych]] przeznaczonych do reprezentacji liczb całkowitych - są to ''short int'', ''int'', ''long int'', ''long long int'' w wersjach ze [[znak liczby|znakiem]] (''signed'') oraz bez znaku (''unsigned''). Ich rozmiary w [[bit|bitach]] zależą od implementacji. Standard C99 określa następujące zależności pomiędzy typami:
*''int'' ma minimum 16 bitów
*''long int'' jest co najmniej takiego rozmiaru, co int
Linia 74:
*[[Liczby całkowite]]
*[[typ (informatyka)|Typy danych]]
 
 
{{Typy danych w C++}}