<br>2^n = x ?? Wie kann ich das auflösen ?
-
ich will nur wissen wie ich herrausfinden kann ob n eine natürliche
Ganzzahl ist, wie mach ich das ? Ich hab 2^n = x wenn ich jetzt zB. 32
einsetze für x wäre die Bedingung erfüllt weil 2^5 = 32 ist kann mir da
jemand ne Formel geben oder muss ich dass via Schleifenkonstrukt lösen ?
Ich komme einfach nimmer drauf, dieses Mathezeug liegt einfach zu lange
zurück *smile*
-
Potenzrechnung 10. Klasse:
2^n = x
<=> log x zur basis 2 = n
<=> lg(x) / lg(2) = ndouble n = log(x) / log(2);
jetzt noch testen ob n eine ganzzahl ist:
if(double(int(n)) == n) //ganzzahl!
else //keine ganzzahl!
-
Also ich würde einfach die Anzahl der gesetzten Bits in x zählen. Wenn das 1 ist, dann ist sie offensichtlich als 2^n (n aus |N) darstellbar.
...x ist doch immer positiv, oder?!
-
das erstere hab ich gesucht. Bin halt schon lang aus der 10. raus. Was das Bitzählen angeht, da brauch ich auch eine Schleife für.
-
Original erstellt von JoelH:
Was das Bitzählen angeht, da brauch ich auch eine Schleife für.Stimmt. Sollte aber wohl schneller sein, als die Variante mit dem Logarithmus.
-
iss nicht zeitkritisch
-
Ist aber auch schöner mit Bitschieberei. IMHO.
-
Im WorstCase sind das aber 31 Verschiebungen und 32 Abfragen!
-
Original erstellt von WebFritzi:
Im WorstCase sind das aber 31 Verschiebungen und 32 Abfragen!Jo! Stimmt! ...aber ich denke, dass es länger dauert, einen Logarithmus zu bestimmen. Ich weiß allerdings auch nicht, was da genau gerechnet werden muss. Weiß das einer?
-
bool istZweierpotenz(unsigned int x) {//ungetestet return (x&(x-1))==0; }
-
ich bin immer wieder erstaunt wie erfinderisch Leute sein können, aber wenn ich mir das so anschau ist es logisch und wohl auch extrem schnell.
[Offtopic]Machst eigentlich noch was anderes als solche Codeschnipsel erfinden Volkard ?[/Offtopic]
-
Hey, den kannte ich auch, ohne mir selbst so geniale Gedanken machen zu müssen. Ein Logarithmus kann man bestimmt auch irgendwie annähern, wie das mit sinus ja auch gemacht wird. Da kann es schon sein, dass 32 Bitschiebeoperationen und Abfragen schneller sind...
-
Original erstellt von JoelH:
[Offtopic]Machst eigentlich noch was anderes als solche Codeschnipsel erfinden Volkard ?[/Offtopic]hab den gar nicht erfunden, sondern hab mich dran erinnert.
-
@TheAmarine
Schön für dich dann hätteste ihn ja auch posten könnnen@Volkard
Hauptsache geholfen