12. UniPascal в детайли
71
READ и READLN от текстов файл не поставят такива проблеми, т.е. старшият байт ще
бъде такъв, какъвто е необходим.
Променливи от изброим тип
Променливите от изброим тип се представят като целочислени променливи с
граници 0..N-1, където N е броят на константите от изброимия тип.
иогически променливи
Както вече беше казано, логическият тип може формално да се разглежда като
изброим тип, дефиниран така:
BOOLEAN = (FALSE, TRUE);
а това означава, че 0 представя FALSE, а 1 - TRUE.
Целочислени променливи
Променливите от тип LongInt се представят чрез четири байта. Първият байт е
младши, следващият байт е следващ по старшинство и последният (четвърти) байт е
старши.Останалите целочислени типове INTEGER, CARDINAL и техните поддиапазони се
представят чрез два байта - първо младшият след него старшият. Числата със знак при
целочислените типове се представят в допълнителен код.
Променливи от тип CHAR
Променливите от тип CHAR се представят със стойности от 0 до 255, като
стойността им съответствува на разширения ASCII код.
Реални променливи
Данните от тип REAL заемат четири байта и представянето им съответства на IEEE
стандарта. Тъй като е възприета обратна наредба на байтовете, то и тук представянето
е с обратен порядък на байтовете. Знакът се разполага в бит 7 на старшия байт (3),
експонентата се разполага в битове 6 - 0 на байт 3 и в бит 7 на байт 2, а мантисата заема
останалото пространство на байт 2 и байтове 1 и 0.
Нека с e означим порядъка (exponent), с m - мантисата (mantissa) и със s - знака
(sign). Тогава стойността (value) е:
(1):
if 0 < e < 255 then value = (-1)
s
*2
(e-127)
*(1.m);
(2):
if (e = 0) and (m = 0) then value = (-1)
s
*0 = 0;
(3):
if (e = 0) and (m <> 0) then value = (-1)
s
*2
-126
*(0.m);
(4):
if (e = 255) and (m = 0) then value = (-1)
s
*infinite;
(5):
if (e = 255) and (m <> 0) then value is a NaN (Not A Number);
UniPascal не поддържа:
*
денормализираните стойности (3). Получава се 0.0;
*
представянето на безкрайност (4). Получава се препълване;
*
невалидните стойности (5). Непредсказуем резултат.
<<  <  GO  >  >>

Вернуться к началу сайта