Liczby bez znaku
Ten typ danych odpowiada kodowaniu wartości całkowitych w naturalnym kodzie dwójkowym.
byte
1-bajtowa liczba całkowita bez znaku (8 bitów).
Zakres od 0 do 28 - 1 (255).word
2-bajtowa liczba całkowita bez znaku (16 bitów).
Zakres od 0 do 216 - 1 (65535).longword
4-bajtowa liczba całkowita bez znaku (32 bity)
Zakres od 0 do 232 - 1 (4294967295).cardinal
Jest to standardowy dla danej platformy typ liczb bez znaku. W Dev-Pascalu odpowiada on typowi longword, ponieważ kompilator ten został przygotowany dla 32-itowego środowiska programowania. Całkiem prawdopodobne, iż w niedalekiej przyszłości typ ten będzie odnosił się do danych 64-bitowych wraz z upowszechnieniem się nowych procesorów.
Liczby ze znakiem
Ten typ danych odpowiada kodowaniu wartości całkowitych w kodzie uzupełnieniowym do 2 - U2.
shortint
1-bajtowa liczba całkowita ze znakiem w kodzie U2 (8 bitów).
Zakres od -27 (-128) do 27 - 1 (127).smallint
2-bajtowa liczba całkowita ze znakiem w kodzie U2 (16 bitów).
Zakres od -215 (-32768) do 215 - 1 (32767).longint
4-bajtowa liczba całkowita ze znakiem w kodzie U2 (32 bity).
Zakres od -231 (-2147483648) do 231 - 1 (2147483647)int64
8-bajtowa liczba całkowita ze znakiem w kodzie U2 (64 bity).
Zakres od -263 (-9223372036854775808) do 263 - 1 (9223372036854775807).integer
Standardowy typ danych całkowitych ze znakiem. W Dev-Pascalu odpowiada on typowi longint z powodów identycznych jak dla typu cardinal.
Podsumowanie
Typy całkowite bez znaku - NBC ze znakiem - U2 byte 8b - 1B Zakres 0...28-1 shortint 8b - 1B Zakres -27...27-1 word 16b - 2B Zakres 0...216-1 smallint 16b - 2B Zakres -215...215-1 longword 32b - 4B Zakres 0...232-1 longint 32b - 4B Zakres -231...231-1 int64 64b - 8B Zakres -263...263-1 cardinal 32b - 4B Zakres 0...232-1 integer 32b - 4B Zakres -231...231-1
Obecnie wszystkie procesory komputerów IBM są zintegrowane wewnętrznie z koprocesorem arytmetycznym, który sprzętowo (zatem bardzo szybko) wykonuje złożone operacje na liczbach zmiennoprzecinkowych. Podstawowe typy danych zmiennoprzecinkowych odpowiadają bezpośrednio typom danych, które obsługuje koprocesor. Koprocesor arytmetyczny pracuje w standardzie IEEE 754.
single
32-bitowa liczba zmiennoprzecinkowa o pojedynczej precyzji w standardzie IEEE 754 (4 bajty).
Zakres od - 3,4 x 1038 do 3,4 x 1038. Precyzja około 7 cyfr znaczących.double
64-bitowa liczba zmiennoprzecinkowa o podwójnej precyzji w standardzie IEEE 754 (8 bajtów).
Zakres od - 1,8 x 10308 do 1,8 x 10308. Precyzja około 15...16 cyfr znaczących.comp
Ten typ jest typem pośrednim pomiędzy liczbami całkowitymi a liczbami zmiennoprzecinkowymi. Liczba typu comp traktowana jest przez koprocesor jak liczby zmiennoprzecinkowa całkowita bez wykładnika. Najczęściej typ ten stosujemy do przechowywania dużych wartości całkowitych, takich jak sumy pieniężne. W tym przypadku suma jest wyrażona w groszach. Aby uzyskać wartość w złotówkach, dzielimy ją przez 100.
64-bitowa liczba całkowita ze znakiem w kodzie U2. Odpowiada typowi int64.
Zakres od -263 (-9223372036854775808) do 263 - 1 (9223372036854775807).real
Typ real jest standardowym typem zmiennoprzecinkowym dla danej platformy. Odpowiada on typowi double.
extended
Jest to wewnętrzny tym reprezentacji liczb zmiennoprzecinkowych w koprocesorze arytmetycznym. Aby zminimalizować błędy obliczeniowe koprocesor wykonuje wewnętrznie obliczenia na rozszerzonym formacie do 80-bitów. Dzięki temu wzrasta zakres oraz precyzja przetwarzanych liczb. Koprocesor po wykonaniu obliczeń automatycznie przelicza wynik z typu extended na typ single lub double.
80-bitowa liczba zmiennoprzecinkowa o rozszerzonej precyzji w standardzie IEEE 754 (10-bajtów).
Zakres od -1,1 x 104932 do 1,1 x 104932. Precyzja około 19...20 cyfr znaczących.Informacje na temat typu extended znajdziesz w rozdziale opisującym standard IEEE 754.
Podsumowanie
Typy zmiennoprzecinkowe koprocesora arytmetycznego single 32b - 4B Zakres ±3,4 x 1038 Precyzja 7...8 cyfr double 64b - 8B Zakres ±1,8 x 10308 Precyzja 15...16 cyfr extended 80b - 10B Zakres ±1,1 x 104932 Precyzja 19...20cyfr comp 64b - 8B Zakres -263 do 263 - 1 Liczba dokładna real 64b - 8B Zakres ±1,8 x 10308 Precyzja 15...16 cyfr
Znaki przechowywane są w pamięci komputera w postaci kodów ASCII (8 bitów) lub Unicode (16 bitów). Kod znaku jest liczbą całkowitą w naturalnym kodzie binarnym.
char
Dana 1-znakowa. Zmienna tego typu przechowuje jeden znak ASCII (8-bitów, 1 bajt). Kod znaku zawiera się w granicach od 0 do 255. Znaki o kodach mniejszych od 32 są zwykle tzw. znakami sterującymi, których celem nie jest prezentacja znaków, lecz wykonanie określonych działań. Na przykład znak NL o kodzie 10 powoduje przejście z wydrukiem do nowego wiersza. Znak CR o kodzie 13 ustawia kursor na początku wiersza.
widechar
Dana 1-znakowa. Przechowuje 16-bitowy kod znaku Unicode. System Unicode wprowadzono, gdy okazało się, iż standardowy kod ASCII jest niewystarczający do reprezentowania wszystkich znaków narodowych. Kod znaku zawiera się w granicach od 0 do 65535. Pierwsze 256 kodów (od 0 do 255) odpowiada znakom ASCII, co znacznie ułatwia wszelkie konwersje.
string
Dana typu string jest 256 elementową tablicą znakową i może przechowywać ciąg znaków. Dostęp do poszczególnych literek przechowywanego tekstu uzyskuje się za pomocą indeksu. Element o indeksie 0 zawiera informację o ilości przechowywanych znaków. Kolejne elementy zawierają poszczególne znaki tekstu. Ilość znaków jest zatem ograniczona do 255.
W zmiennej s umieszczamy napis Janusz.
Zawartość zmiennej typu string s[0] s[1] s[2] s[3] s[4] s[5] s[6] s[7] \6 J a n u s z ? Zawartość komórek zmiennej s poza obszarem tekstu (s[7]...s[255]) jest niezdefiniowana, tzn. mogą tam być dowolne znaki pochodzące z poprzednich działań nad tą zmienną lub obszarem pamięci przez nią zajmowanym.
longstring, ANSIstring
Dana tego typu jest 32-bitowym (4 bajty) adresem obszaru pamięci, w którym przechowywany jest właściwy tekst. Dostęp do poszczególnych znaków odbywa się za pomocą indeksów identycznie jak w typie string. Ilość znaków nie jest ograniczona do 255, lecz może być dowolna (limitem jest dostępny obszar pamięci). Na końcu przechowywanego tekstu wstawiany jest znak o kodzie 0. Zmienne tego typu są dynamicznie obsługiwane przez Pascala. Ich dokładny opis wymaga osobnego artykułu.
W zmiennej s umieszczamy napis Janusz.
Zawartość zmiennej typu ANSIstring lub longstring s[1] s[2] s[3] s[4] s[5] s[6] s[7] J a n u s z \0
boolean
Zmienna 8-bitowa (1 bajt). Jeśli wszystkie bity są ustawione na 0, to przedstawia wartość logiczną FALSE. Jeśli chociaż jeden z bitów ma wartość 1, to przedstawia wartość logiczną TRUE. Standardowo wyrażenia logiczne zmieniają zawartość najmłodszego bitu - pozostałe przyjmują zawsze wartość 0:
00000000(BOOLEAN) = FALSE (fałsz)
00000001(BOOLEAN) = TRUE (prawda)
Dokument ten rozpowszechniany jest zgodnie z zasadami licencji
GNU Free Documentation License.
Źródło: mgr Jerzy Wałaszek