14.6. Функции обработки машинных слов Lo, Hi и Swap

Среди прочих специальных средств низкого уровня Турбо Паскаль предоставляет несколько удобных функций для работы над отдельными байтами машинных слов. Некоторые системные переменные и функции Турбо Паскаля возвращают два однобайтовых значения, объединенных в тип Word. Для их «распаковки» как раз подходят описываемые здесь функции. Их три (табл. 14.1).

Таблица 14.1

Функция : Тип

Возвращаемое значение

Hi(X) : Тип-X

Старший байт аргумента X

Lo(X) : Тип-X

Младший байт аргумента X

Swap(X) : Тип-X

Число с переставленными старшим и младшим байтами

Аргумент X имеет тип Word или Integer ( 2-байтовый целый), и возвращаемое значение имеет тот же тип, что и X.

Любое число типа Word раскладывается на два слагаемых из значений своих байтов по правилу (для типа Integer эта формула не подходит)

X := Hi(X) * 256 + Lo(X);

Функция Swap возвращает число типа Word или Integer в зависимости от типа аргумента X, в котором старший и младший байты поменялись местами. Следует быть осторожным при использовании функции с аргументом типа LongInt. В версии 5.5 Турбо Паскаля компилятор «ничего не имеет против» таких вызовов, но возвращаемое значение при счете усекается до типа Word, меняя его иной раз до неузнаваемости.