Einzelnen Beitrag anzeigen

einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#22

AW: Index vom x-tem gesetztem Bit

  Alt 3. Jun 2020, 12:00
Sorry, aber Deine Lösung läßt sich (unter XE5) (noch?) nicht kompilieren.
Sorry, wollte die Inline-Variablen auch mal ausprobieren. Dann aber vergessen die wieder rauszunehmen:

Delphi-Quellcode:
function ValueOfNthSetBitV2(const aValue: UInt64; const aValueBitWidth: Byte; const aN: UInt64): Byte;
var
  vTmp: Array[0..63] of UInt64;
  vBitCount: Byte;
  vI: Integer;
  vBit: UInt64;
begin
  if aValueBitWidth= 0 then
    raise Exception.Create('Fehlermeldung');
  vBitCount:= 0;
  for vI:= 0 to aValueBitWidth- 1 do
  begin
    vBit:= 1 shl vI;
    if (aValue and vBit)<> 0 then
    begin
      vTmp[vBitCount]:= vBit;
      Inc(vBitCount);
    end;
  end;
  if vBitCount= 0 then
    raise Exception.Create('Fehlermeldung');
  Result:= vTmp[(aN- 1) mod vBitCount];
end;
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat