Entwickler-Ecke

Alle Sprachen - Alle Plattformen - Eine Java-Integerfunktion nach Pascal/Delphi übersetzen


Delphi-Laie - Di 07.07.20 00:09
Titel: Eine Java-Integerfunktion nach Pascal/Delphi übersetzen
Hallo Programmierfreunde!

Zur Zeit beschäftige ich mich damit, einen Java-Quelltext nach Pascal / Delphi zu übersetzen.

Im Java-Quelltext findet sich folgendes:


Quelltext
1:
2:
3:
int e = 0;
...
Integer.numberOfTrailingZeros(e)


Freilich habe ich Erklärungen dazu schon gesucht, natürlich auch gefunden und zu verstehen versucht, aber so etwas "schräges" ist mir noch nie untergekommen, und so bin ich mit einem Übersetzungsversuch nach Pascal bzw. Delphi derzeit überfordert.

Weiß jemand, ob man überhaupt eine Chance hat, diese Funktion mit Pascal- bzw. Delphi-"Bordmitteln" nachzubilden, und, falls ja, wie?

Danke im voraus und Gruß

Delphi-Laie


Gausi - Di 07.07.20 06:21

Wenn ich die Erklärung von Google zu der Funktion richtig verstehe (d.h. es wird die Anzahl der Nullen hinter der letzten 1 in der Binärdarstellung ausgegeben), dann sollte das so gehen

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function numberOfTrailingZeros(aInt: Integer): Integer;
begin
    result := 0;
    while (result < 32do
    begin
        if ((aInt shr result) and 1) = 0  then
            inc(result)
        else
          break;
    end;
end;


Zu beachten wäre noch das Vorzeichen-Bit, und ggf. abhärten gegenüber 64-Bit und sowas.


Delphi-Laie - Di 07.07.20 12:41

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Wenn ich die Erklärung von Google zu der Funktion richtig verstehe


Naja, wenn schon ein Programmierprofi hier ein wenig Vorsicht zeigt, ist klar, warum ich davor zunächst kapitulierte.

Vielen Dank, Gausi! Mal schauen, was sich daraus machen läßt.


Th69 - Di 07.07.20 14:27

Dafür gibt es aber effizientere Umsetzungen (sogar direkt als Prozessorbefehl), s. Find first set [https://en.wikipedia.org/wiki/Find_first_set].


Delphi-Laie - Di 07.07.20 20:33

Th69, vielen Dank auch Dir!