Serwis Edukacyjny w I-LO w Tarnowie ![]() Materiały dla uczniów liceum |
Wyjście Spis treści Wstecz Dalej
Autor artykułu: mgr Jerzy Wałaszek |
©2023 mgr Jerzy Wałaszek
|
Ten typ danych odpowiada kodowaniu wartości całkowitych w naturalnym kodzie dwójkowym.
1-bajtowa liczba całkowita bez znaku (8
bitów). Zakres od 0 do 28 - 1 (255). |
2-bajtowa liczba całkowita bez znaku (16
bitów). Zakres od 0 do 216 - 1 (65535). |
4-bajtowa liczba całkowita bez znaku (32
bity) Zakres od 0 do 232 - 1 (4294967295). |
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.
Ten typ danych odpowiada kodowaniu wartości całkowitych w kodzie uzupełnieniowym do 2 - U2.
1-bajtowa liczba całkowita ze znakiem w kodzie U2
(8 bitów). Zakres od -27 (-128) do 27 - 1 (127). |
2-bajtowa liczba całkowita ze znakiem w kodzie U2
(16 bitów). Zakres od -215 (-32768) do 215 - 1 (32767). |
4-bajtowa liczba całkowita ze znakiem w kodzie U2
(32 bity). Zakres od -231 (-2147483648) do 231 - 1 (2147483647). |
8-bajtowa liczba całkowita ze znakiem w kodzie U2
(64 bity). Zakres od -263 (-9223372036854775808) do 263 - 1 (9223372036854775807). |
Standardowy typ danych całkowitych ze znakiem. W Dev-Pascalu odpowiada on typowi longint z powodów identycznych jak dla typu cardinal.
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.
32-bitowa liczba zmiennoprzecinkowa o pojedynczej precyzji w
standardzie IEEE 754 (4 bajty). Zakres od - 3,4 · 1038 do 3,4 · 1038. Precyzja około 7 cyfr znaczących. |
64-bitowa liczba zmiennoprzecinkowa o podwójnej precyzji w
standardzie IEEE 754 (8 bajtów). Zakres od - 1,8 · 10308 do 1,8 · 10308. Precyzja około 15...16 cyfr znaczących. |
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). |
Typ real jest standardowym typem zmiennoprzecinkowym dla danej platformy. Odpowiada on typowi double.
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 ·
104932
do
1,1 ·
104932. Precyzja
około 19...20 cyfr znaczących.
Informacje na temat typu extended znajdziesz w rozdziale opisującym standard IEEE 754.
Typy zmiennoprzecinkowe koprocesora arytmetycznego | |||
---|---|---|---|
single | 32b - 4B | Zakres ±3,4 · 1038 | Precyzja 7...8 cyfr |
double | 64b - 8B | Zakres ±1,8 · 10308 | Precyzja 15...16 cyfr |
extended | 80b - 10B | Zakres ±1,1 · 104932 | Precyzja 19...20cyfr |
comp | 64b - 8B | Zakres -263 do 263 - 1 | Liczba dokładna |
real | 64b - 8B | Zakres ±1,8 · 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.
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.
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.
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.
Przykład:
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.
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.
Przykład:
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 |
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) |
![]() |
Zespół Przedmiotowy Chemii-Fizyki-Informatyki w I Liceum Ogólnokształcącym im. Kazimierza Brodzińskiego w Tarnowie ul. Piłsudskiego 4 ©2023 mgr Jerzy Wałaszek |
Materiały tylko do użytku dydaktycznego. Ich kopiowanie i powielanie jest dozwolone
pod warunkiem podania źródła oraz niepobierania za to pieniędzy.
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
Serwis wykorzystuje pliki cookies. Jeśli nie chcesz ich otrzymywać, zablokuj je w swojej przeglądarce.
Informacje dodatkowe.