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

[wersja nieprzejrzana][wersja przejrzana]
Usunięta treść Dodana treść
kat.
m brak definicji, powtórzone linki, WP:SK
Linia 1:
'''Liczby całkowite''' w [[język programowania|językach programowania]] – [[typ danych]] dotyczący [[Liczby całkowite|liczb całkowitych]]. Liczby te mogą zostać zapisane w [[pamięć komputerowa|pamięci komputera]] w rozmaity sposób. Obecnie dla [[liczby naturalne|liczb naturalnych]] najczęściej spotykany jest pozycyjny [[dwójkowy system liczbowy]]. Inne znane sposoby zapisu to [[kod Graya]] i [[Kod BCD|BCD]].
==Reprezentacja liczby w kodzie binarnym==
 
== Reprezentacja liczby w kodzie binarnym ==
=== Grupowanie informacji ===
Na pamięć komputera można spojrzeć jak na komórki. W każdej z nich trzymany jest elementarny ''kwant'' [[informacja|informacji]] zwany [[bit|bitem]]em. W praktyce komórki te grupuje się w większe całości zwane, w zależności od rozmiaru, [[bajt]]ami (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:
* [[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.
 
Linia 29 ⟶ 30:
Ten zapis pozwala uniknąć niejednoznacznej postaci zera (kosztem niesymetryczności zakresu reprezentowanych liczb) oraz ułatwia dodawanie. Dodawanie w tym zapisie nie różni się niczym od dodawania liczb binarnych bez znaku. Wystąpienie dokładnie jednego z przeniesień: z najstarszego bitu (bitu znaku) i na najstarszy bit świadczy o przekroczeniu dopuszczalnego zakresu (o [[przepełnienie|przepełnieniu]]).
 
== Liczby całkowite w językach programowania ==
* Typy danych całkowitych w językach [[C (język programowania)|C]], [[C++]]: ''short int'', ''int'', ''long int'', ''long long int'' (w wersjach ''signed'' i ''unsigned'')
* Typy danych całkowitych w [[Pascal (język programowania)|PascalPascalu]]u: ''ShortInt'', ''Integer'', ''LongInt''
 
=== 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]]ach 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
* ''long long int'' ma minimum 64 bity
W praktyce współczesne [[kompilator]]y (takie jak [[GNU Compiler Collection|GCC]]) na maszynach 32-bitowych zazwyczaj stosują typy o następujących rozmiarach:
* ''short int'' ma 16 bitów
* ''int'' jest równy ''long int'' i ma 32 bity
* ''long long int'' ma 64 bity
 
Typem całkowitym o rozmiarze 8 bitów w praktyce jest także [[Znakowy typ danych|typ znakowy]] ''char''.
 
Zakresy liczb całkowitych możliwych do przedstawienia za pomocą danego typu (w przypadku [[GNU Compiler Collection|GCC]] 3.3.5) przedstawia poniższa tabela:
Linia 54 ⟶ 55:
| 8
| ''char''
| −128 — +127 (ze znakiem)<br />0 — +255 (bez znaku)
|-
| 16
| ''short int''
| −32 768 — +32 767 (ze znakiem)<br />0 — +65 535 (bez znaku)
|-
| 32
| ''int'', ''long int''
| &minus;2 147 483 648 — +2 147 483 647 (ze znakiem)<br />0 — +4 294 967 295 (bez znaku)
|-
| 64
| ''long long int''
| −9 223 372 036 854 775 808 — +9 223 372 036 854 775 807 (ze znakiem)<br />0 — +18 446 744 073 709 551 615 (bez znaku)
|}
 
==Zobacz też==
*[[Liczby całkowite]]
*[[typ (informatyka)|Typy danych]]
 
{{Typy danych w C++}}