Autor Beitrag
ute.h_80
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18

Win XP
D5 Enterprise
BeitragVerfasst: Di 13.01.04 22:24 
Vielleicht könnt ihr mir helfen.

Was bedeutet diese Funktion in deutsch? Und was macht sie mit dem übergebenen Wert?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
FUNCTION Binary_Length(x:int64):int64;
BEGIN
     result:=0;
     WHILE x>0 DO
           BEGIN
                inc(result);
                x:=x SHR 1 //bitweises Verschieben um eine Stelle nach rechts
           END;
END;


Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
KidPaddle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 351

WinXP,Linux
D7 Prof, XE7
BeitragVerfasst: Di 13.01.04 22:47 
Die Funktion ermittelt das höchste gesetzte Bit und gibt die Stelle zurueck.

Du hast z. B. eine Zahl 22, dann ist die Binärdarstellung 00010110. Mit der Funktion SHR wird vorne ein 0 angehängt und die rechte Stelle wird entfernt. Das wird shiften genannt und zwar hier nach rechts.

SHR - Shift right
SHL - Shift left

Dadurch, dass bei jedem Durchlauf eine 1 wegfallen kann, ist irgendwann keine 1 mehr vorhanden und das ist dann, wenn der Wert gleich 0 ist.

Schleifendurchlauf:
1. 10110 Result := 1
2. 01011 Result := 2
3. 00101 Result := 3
4. 00010 Result := 4
5. 00001 Result := 5
6. 00000 Schleife wird verlassen

Das höchste gesetzte Bit ist das 5 Bit.

Ich hoffe, das war verständlich.

Gruß
KidPaddle
ute.h_80 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 18

Win XP
D5 Enterprise
BeitragVerfasst: Di 13.01.04 23:11 
DANKE!!!

super erklärung! :D