在Delphi,所述DivMod函數的聲明是是否有DivMod是*不*字(<= 65535)?
procedure DivMod(Dividend: Cardinal; Divisor: Word;
var Result, Remainder: Word);
因此,除數,結果,和餘數不能磨碎機大於65535,一個相當嚴重的限制。爲什麼是這樣?爲什麼不能放置
procedure DivMod(Dividend: Cardinal; Divisor: Cardinal;
var Result, Remainder: Cardinal);
該過程是使用匯編實現的,因此可能非常快。代碼
PUSH EBX
MOV EBX,EDX
MOV EDX,EAX
SHR EDX,16
DIV BX
MOV EBX,Remainder
MOV [ECX],AX
MOV [EBX],DX
POP EBX
難以適應紅雀嗎?天真的嘗試要慢多少?
procedure DivModInt(const Dividend: integer; const Divisor: integer; out result: integer; out remainder: integer);
begin
result := Dividend div Divisor;
remainder := Dividend mod Divisor;
end;
那不是(?)限於16位整數嗎?
您接受的答案不能回答標題中的問題。也許你可以編輯標題,使它更貼近你真正想要的答案。 – 2010-03-08 09:10:15
我已經完成了。 – 2010-03-08 13:11:39