如果你是说负数也要取到正数的余数?很简单,取x的绝对值。如:
x := abs(x) mod y;
但是即使使用了绝对值。求得的余数依然是4,当x为正整数时,余数才能为$124。
因为当前的x超过了整数的最大值所以被错误的转换为了一个负数: -211403004。使用该负数求余自然为-4。
如果你想要求得余数为$124,则需要将x的类型设置为LongWord(无符号整数,值域为0~$FFFFFFFF),或者Int64类型的整数才能求得余数为$124,如:
var
x: LongWord; y: Integer;
begin
x := $F3663F04;
y := $3E8;
x := x mod y;
end;
不能用int的,你的x值为4083564292已经超出了int的上限2147483647
,也就是说已经溢出了,修改的话,可以将x和y都由int改为Int64,它的上限为-2^63 .. 2^63
var x,y:Int64;
begin
x := $F3663F04;
y := $3E8;
x := x mod y;
end;
intege的范围-2147483648 .. 2147483647 你设置的值超出了这个范围,应该定义为int64类型。