что делает минус перед скобкой в delphi
есть переменная mask она типа cardinal, и при её присвоении происходит вот эта:
var Mask,Byte : cardinal;
Mask := -(Result and 1);
что значит минус перед скобкой? Если переменная не может быть меньше 0
Result получаем вот так:
for Byte in TEncoding.ANSI.GetBytes(Text) do
begin
Result := Result xor Byte;
так что не думаю что там может быть минус, я в delphi не силён так что могу много чего не знать.
Ответы (1 шт):
Типа Cardinal в Delphi это синоним типа unsigned int из C/C++. 4-байтовое беззнаковое целое.
(Result and 1) может иметь только два значения: 1 или 0.
Применение унарного минуса к 0 даст 0, то есть число 00000000 00000000 00000000 00000000b.
Применение унарного минуса к 1 даст -1, то есть число 11111111 11111111 11111111 11111111b.
В итоге вы получаете значение, у которого все биты соответствуют младшему биту значения Result.