Зачем переводить туда-сюда?
может так:
Код:
var
N : WORD;
begin
N := (N And $FF00) Or (Not (N And $00FF));
end;
Логика (в кв. скобках - результат операции под соотв. номером):
1. N And $FF00 - получаем старший байт с нулевым младшим байтом.
2. N And $00FF - получаем младший байт.
3. Not ([2]) - инвертированый младший байт.
4. [1] Or [3] - объединяем результат.
Вроде правильно.
Для DWORD (который Integer) сам поправишь - принципиально не меняется, только маски соответсвующие нужны.