Чтобы правильно перевести код нужно знать определения переменных и массива.
Судя по коду, mask и value - целые, причем тоже unsigned, т.е. без знака, так же как и элементы массива word
Поищите в коде похожие определения:
- Код: Выделить всё
unsigned int mask;
unsigned int value;
unsigned int word[];
Если да, то цикл должен примерно выглядеть так:
- Код: Выделить всё
i:=1;
j:=0;
while (i>=0) do begin // for с двумя индексами в pascal невозможен
word[i]:=((value AND mask) shr j)OR(&8000); // ((unsigned int) ((value & mask) >> j)) | 0x8000 преобразование "без знака" выполнится само, если массив объявлен беззнаковым: var word:array of word, к примеру.
mask := mask shl 15;
dec(i,1); // или i:=i-1;
inc(j,15); // или j:=j+15;
end; //