Einzelnen Beitrag anzeigen

Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#1

BigInt div 2 mittels shr 1

  Alt 30. Nov 2016, 18:58
Delphi-Version: 2007
Ich hab eine BigInt, die liegt in Blöcken vor. Ich wollte die Zahl durch 2 teilen.
Bekomme aber immer "Fehler bei Bereichsprüfung". Kennt sich da jemand aus?
Delphi-Quellcode:
procedure TMemoForm.Button2Click(Sender: TObject);
var
  Result: TIntegerDynArray;
  Temp: UInt64;
  I, Count: integer;
  S: string;
begin
  // 315901256781234 div 2 = ..
  Count := 4;
  SetLength(Result, 4);
  Result[0] := 1234;
  Result[1] := 5678;
  Result[2] := 9012;
  Result[3] := 315;
  Temp := 0;
  S := '';
  // shr 1
  for I := Count - 1 downto 0 do
  begin
    Temp := (UInt64(Result[I]) shl UInt64(31)) or (Temp shl UInt64(32)); // *** hier
    Result[I] := Temp shr UInt64(32);
    S := IntToStr(Result[I]) + S;
  end;
  MemoB.Lines.Add(S);
end;
  Mit Zitat antworten Zitat