2 Hoch N: Wie In C?

Forum: PC-Programmierung 2 hoch N: Wie in C? Forenliste Threadliste Neuer Beitrag Suchen Anmelden Benutzerliste Bildergalerie Hilfe Login 2 hoch N: Wie in C? von Stefan (Gast) 24.12.2005 23:07 Lesenswert?
Ich trau mich fast gar nicht zu fragen, aber wie heisst der Operator in C, mit dem man etwas potenzieren kann? Also 2 hoch n? Wie muss man das schreiben? Entweder ich bin blind, ich habs in meiner C-Beschreibung nicht gefunden, oder das gibt es gar nicht. Stefan 01.06.2017 23:07: Gesperrt durch Moderator Beitrag melden Bearbeiten Thread verschieben Thread entsperren Anmeldepflicht aktivieren Anpinnen Thread löschen Thread mit anderem zusammenführen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von Lupin (Gast) 24.12.2005 23:24 Lesenswert?
(1<<n) ist gleich 2^n Aber wenn du eine andere basis als 2 haben willst musst du: a) eine lookup tabelle machen (eingeschränkter wertebereich, sehr schnell) b) eine assembler funktion schreiben/finden oder c) die sqr() funktion benutzen. Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von Lupin (Gast) 24.12.2005 23:26 Lesenswert?
Das mit dem sqr() ist natürlich quatsch. heh Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von Lupin (Gast) 24.12.2005 23:28 Lesenswert?
#include <math.h> double val2 = pow(x, 4); // x hoch 4 Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von Stefan (Gast) 25.12.2005 15:29 Lesenswert?
Oh mann, bin ich blind. Man dankt.Schöne Feiertage. Stefan Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von coder (Gast) 01.06.2017 15:26 Lesenswert?
Lupin schrieb: > Das mit dem sqr() ist natürlich quatsch. heh Das ist kein Quatsch: sqr(x) == pow(x, 0.5)
1pow(x, 1.5)
==
1pow(pow(x, 3), 0.5)
==
1sqr(pow(x, 3))
==
1sqr(x*x*x)
Das letzte sollte das schnellste sein. Wenn man den Exponenten zur Compilierzeit kennt kann man auch speziell die berechnung so schreiben, dass diese nur die sqr-function und *-operator benutzt. Möchte man eine konstante Basis (die eine potenz von 2 ist) mit einer Variable(Ganzzahl) potenzieren so kann man dies ebenfalls mit dem Verschiebeoperator tun:
1mul*pow(k, x)
==
1mul<<(k_exp*x)
k: Potenz von 2 k_exp: exponent e in
1k = pow(2, e)
Bsp.:
15*pow(4, x)
==
15<<(2*x)
Wenn du C++ verwendest gib es Bibliotheken die speziell optimierte Potenzfunktionen mit template-parametern für den konstanten Teil bereitstellen. Boost(wo einige Teile auch in C funktionieren) sollte soetwas enthalten, wenn ich mich nicht irre. Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von Wilhelm M. (wimalopaan) 01.06.2017 18:12 Lesenswert?
coder schrieb: > Wenn du C++ verwendest gib es Bibliotheken die speziell optimierte > Potenzfunktionen mit template-parametern für den konstanten Teil > bereitstellen. Boost(wo einige Teile auch in C funktionieren) sollte > soetwas enthalten, wenn ich mich nicht irre. Die spezielle Bibliothek heisst stdlibc++ ;-) Ist der Exponent constexpr wird alles zur Compilezeit ausgerechnet! Da steht dann im Code nur noch die entsprechende Konstante. Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von Nick S. (c0re) 01.06.2017 18:40 Lesenswert?
Wenn er in den letzten 11 Jahren!!!!!!!!!!! keine Lösung gefunden hat, ist ihm nicht mehr zu helfen. Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von T.roll (Gast) 01.06.2017 20:15 Lesenswert?
Nick S. schrieb: > keine Lösung gefunden hat, > ist ihm nicht mehr zu helfen. Ist doch egal. Es gab noch eine sinnvolle Ergänzung zur Berechnung mit sqr(); Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Re: 2 hoch N: Wie in C? von Yalu X. (yalu) (Moderator) 01.06.2017 23:09 Lesenswert?
T.roll schrieb: > Es gab noch eine sinnvolle Ergänzung zur Berechnung mit sqr(); Arg sinnvoll war diese Ergänzung nicht, da es eine sqr-Funktion in C gar nicht gibt. Sqr gibt es bspw. in Pascal als Quadratfunktion und in Basic als Quadratwurzelfunktion. Die Quadratwurzelfunktion in C, Pascal, Fortran, Python und den meisten anderen von Basic verschiedenen Sprachen heißt sqrt. Da das aber mit der vor 11½ Jahren gestellten Frage kaum etwas zu tun hat, lassen wir den Thread jetzt besser ruhen. 01.06.2017 23:10: Bearbeitet durch Moderator Beitrag melden Bearbeiten Löschen Markierten Text zitieren Antwort Antwort mit Zitat Forenliste Threadliste Neuer Beitrag Suchen Anmelden Benutzerliste Bildergalerie Hilfe Login Thread beobachten | Seitenaufteilung abschalten Dieser Beitrag ist gesperrt und kann nicht beantwortet werden. Forenliste Threadliste Neuer Beitrag Suchen Anmelden Benutzerliste Bildergalerie Hilfe Login
Kontakt/Impressum – Datenschutzerklärung – Nutzungsbedingungen – Werbung auf Mikrocontroller.net

Từ khóa » C 2 Hoch X