Das ganze mal als Aufgabe erfasst:
- mit dem "Ist Mod 2 gleich 0" steht da ja, das nur gerade und somit restlos durch 2 teilbare Zahlen anschließend durch 2 ganzzahlig geteilt werden.
- ganzzahliges teilen geht in Pascal mit "div"
- ganzzahliges teilen von positiven 2er Potenzen geht auch binär mit "shr" und auch ein MOD mit 2er Potenzen geht binär mit "and"
Delphi-Quellcode:
if ((x and 1) = 0) then begin
x := (x shr 1);
Panel1.Caption := IntToStr (x);
end
- wenn dir das so seltsam vorkommt.. bist du damit nicht allein und in Pascal muss man das nicht so machen (aber hilft beim Verständnis wie die Ganzzahlen intern gespeichert sind)
- wenn du verstehst warum dies auch funktioniert, dann klappt es auch ganz von alleine mit dem warum fürs "div"
- Funktion als Text: bei geraden Zahlen ist das LSB immer 0 und das Rechtsschieben um 1 entspricht der Division durch 2