Moin moin!
Ich habe hier so eine tolle Methode, die eine bestimmte positive Zahl einliest und sie dann durch 2 teilt, bis sie <= 0 ist. Dabei werden die Teilschritte gezählt und abschließend ausgegeben. Für die Leute, die keine Prosatexte mögen, auch so:
int z = 0;
while(n > 1)
{
n = n / 2;
z++;
}
return z;
Nun muss ich eine math. Formel finden, mit der ich auch auf das Ergebnis kommen kann. Wenn man bspw. ein paar Werte einsetzt, erhält man eine gewisse Tabelle:
1: 0
2: 1
3: 1
4: 2
5: 2
6: 2
7: 2
8: 3
9: 3
...
15: 3
16: 4
...
31: 4
32: 5
...
63: 5
64: 6
...
Math. gesehen müsste es sich ja um eine Quadratwurzel handeln? Aber bei 15 kommt bspw. ein falscher Wert. Oder stimmt das mit der Wrurzel doch? Und wie kommt man auf so eine Lösung überhaupt?
Grüße von planlos123
Math. Ausdruck von Methoden
-
-
damit ich es nicht ganz verrate sag ichs mal mit python:
[edit]als zusaetzlichen hint:
immer dieser obfuscated code
falls du gerne bits schupfst, dann koennte es hilfreich sein wenn du weiszt dass ein '/ 2' gleich mit einem '>> 1' ist. wenn du dann verstehst was das programm macht, dann sollte auch der 2er-log sinn ergeben.[/edit] -
1) ist in der while absichtlich > 1 und nicht >0?
2) wenn es >0 macht es nichts anderes als die länge der zahl in binärer darstellung zu zählen, bei >1 seh ich denn sinn dahinter noch nicht ganz...
3) der abgerundete ld von Kampi ist der beste tipp wenn es tatsächlich >1 ist...
(bei >0 wäre das ergbnis aufzurunden)Thomas
-
2) wenn es >0 macht es nichts anderes als die länge der zahl in binärer darstellung zu zählen, bei >1 seh ich denn sinn dahinter noch nicht ganz...ob es sonderlich sinnvoll ist sei dahingestellt, aber so zeigt das ergebnis das hoechste [tex='2^{wievielte}'][/tex]
bit das man anpatzen muss um die zahl darstellen zu koennen.
zb 7: das hoechste ist das 2^2er (und dann halt noch 2^1 und 2^0).
-
ob es sonderlich sinnvoll ist sei dahingestellt, aber so zeigt das ergebnis das hoechste
[tex='2^{wievielte}'][/tex]bit das man anpatzen muss um die zahl darstellen zu koennen.
zb 7: das hoechste ist das 2^2er (und dann halt noch 2^1 und 2^0).
schon klar, aber wenn mans in dem zusammenhang braucht, geht man normalerweise ja gleich vom ld aus... wie auch immer...
Thomas
-
schon klar, aber wenn mans in dem zusammenhang braucht, geht man normalerweise ja gleich vom ld aus
natuerlich. das beispiel schaut aber nach einer hausaufgabe aus bei der man eben drauf kommen soll dass man den ld verwenden soll...
-
natuerlich. das beispiel schaut aber nach einer hausaufgabe aus bei der man eben drauf kommen soll dass man den ld verwenden soll...
Und ihr habts es verratenNaja, jetzt muß er halt noch draufkommen, wie man den ld ausrechnet, wenn der in der Math Library nicht extra implementiert ist.
-
Kann er ja einfach mit "man ld" nachlesen.:shiner:
-
Kann er ja einfach mit "man ld" nachlesen.:shiner:
also wenn das so weitergeht wird das noch TDM (thread des monats)Thomas
-
Psst!;)
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!