Autor Beitrag
Delphi-Laie
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Mo 06.07.20 23:09 
Hallo Programmierfreunde!

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

Im Java-Quelltext findet sich folgendes:

ausblenden 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

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8541
Erhaltene Danke: 475

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Di 07.07.20 05: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
ausblenden 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.

_________________
We are, we were and will not be.

Für diesen Beitrag haben gedankt: Delphi-Laie
Delphi-Laie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Di 07.07.20 11: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.

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4791
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 07.07.20 13:27 
Dafür gibt es aber effizientere Umsetzungen (sogar direkt als Prozessorbefehl), s. Find first set.

Für diesen Beitrag haben gedankt: Delphi-Laie
Delphi-Laie Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1600
Erhaltene Danke: 232


Delphi 2 - RAD-Studio 10.1 Berlin
BeitragVerfasst: Di 07.07.20 19:33 
Th69, vielen Dank auch Dir!

_________________
Ordnung ist das halbe Leben - und sie zu schaffen die andere Hälfte.