Probleme bei der Umrechnung
-
chaosboy86 schrieb:
mh ok aber belasse ich dann mein quelltext und füge das mit ein oder wie muss ich das machen???
Junge, bist du doof oder was? Verstehen was ich da gecodet habe, dass sollst du. Ich mach doch nicht deine Hausaufgaben. So lernste doch nix.
-
Oder sogar ohne pow
a = 2 * a + (input[ct] - '0');
-
schuldigung aber man muss nicht gleich unfreundlich werden....
-
@chaosboy86
Du musst zahl*27 rechnen ( mal und hoch, nicht plus und mal)
Der Button für Programmcode ist nicht B sondern C/C++@Hacker
Du berechnest die Zahl falschrum. Das fällt bei der 9 aber nicht auf.
Auf das pow kann man auch verzichten.
Dann sieht die Schleife so aus:for(size_t ct(0);ct < input.length();++ct) a = (input[ct] - '0') + a * 2;
-
@Dirk lasse ich dann die Klammern weg und wie schreibt man das hoch? z.b. so "^"?
-
chaosboy86 schrieb:
@Dirk lasse ich dann die Klammern weg und wie schreibt man das hoch? z.b. so "^"?
Nein. Das ist der bitweise XOR-Operator.
DirkB schrieb:
@Hacker
Du berechnest die Zahl falschrum. Das fällt bei der 9 aber nicht auf.Nein. Ich berechne mit einer anderen Bit-Reihenfolge.
chaosboy86 schrieb:
schuldigung aber man muss nicht gleich unfreundlich werden....
Tut mir Leid

Aber wenn du den Code so übernimmst und nix lernst, werd ich immer ganz böse
@volkard: Der ist nice, den kannt' ich noch nicht.
Aber noch besser wäre doch shiften!!
for(size_t ct(0);ct < input.length();++ct) a += (input[ct] - '0') * (1 << ct);
-
@hacker aber wie gebe ich denn sonst bei c++ 2hoch7 ein?
-
chaosboy86 schrieb:
@hacker aber wie gebe ich denn sonst bei c++ 2hoch7 ein?
Bei speziell Zweierpotenzen gibt es mehrere Wege:
1 << Exponent std::pow(2, Exponent);@volkard: Deine Version ist eig. falsch, nicht?
Denn:2[h]5[/h] != 2 * 5 + 1
-
@Hacker: Nein, es muss 1 << Exponent heißen, nicht 1 >> Exponent.
-
Hacker schrieb:
@volkard: Deine Version ist eig. falsch, nicht?
Denn:2[h]5[/h] != 2 * 5 + 1http://ideone.com/LR1ZZ
http://de.wikipedia.org/wiki/Horner-Schema
-
pyhax schrieb:
@Hacker: Nein, es muss 1 << Exponent heißen, nicht 1 >> Exponent.
Oh ja, editiert

@volkard: Ah, ich hab da
+=und nicht=gelesen, dachte du hast "meine" Version leicht verändert.
-
danke an alle aber ich glaube ich stelle mich einfach zu blöd an....
-
Hacker schrieb:
Bei speziell Zweierpotenzen gibt es mehrere Wege:
1 >> Exponent std::pow(2, Exponent);... wie so oft ein Level an Falschheit/Unsinnigkeit das schon körperlich weh tut.
-
Siehe Beitrag von pyhax
-
std::pow() zum Berechnen einer Integer Zweierpotenz? Geht's noch?
-
-
Wie können ja mischen.
a += *ch - '0' + a;(Leider total unleserlich.)
Ach, wenn schon Unfug, dann richtig.a +=+ a +*+ ch +~+ '0' -~- 0;;
-
hustbaer schrieb:
Hacker schrieb:
Bei speziell Zweierpotenzen gibt es mehrere Wege:
1 >> Exponent std::pow(2, Exponent);... wie so oft ein Level an Falschheit/Unsinnigkeit das schon körperlich weh tut.
- Siehe Beitrag von pyhax
Ja, Flüchtigkeitsfehler. Passiert dir nie, was?
- std::pow() zum Berechnen einer Integer Zweierpotenz? Geht's noch?
Ja? Denn ein Weg ist es immmer noch (auch wenn ein vergleichsweise ineffizienter).
@volkard: Ja, das ist der schnellste.
-
@volkard: Fehlt bei dem ersten nicht ein * 2 ?
-
pyhax schrieb:
@volkard: Fehlt bei dem ersten nicht ein * 2 ?
Nein. Statt a=a*2 ist es ja jetzt ein a+=a
-
Hacker schrieb:
DirkB schrieb:
@Hacker
Du berechnest die Zahl falschrum. Das fällt bei der 9 aber nicht auf.Nein. Ich berechne mit einer anderen Bit-Reihenfolge.
i.A ist das MSB links und das LSB rechts, wie in den anderen Zahlensystemn auch (Dezimal, Hexadezimal, Oktal)
Sehr einfach wäre auch
strtol(input,NULL,2);
Aber auch das arbeitet mit LSB rechts.
-
Hallo
Bin auch Neu in C++ Welt und würde dieses Problem folgendermaßen lösen:
Ein array von bitelementen definieren oder deklarieren, dann mit einer for schleife das aray auffüllen:
for(int i=0;i<Max;i++) { cout<< i+1 <<" bit wert eingeben: "; cin>> bits[i]; }Danach auch mit einer For schleife deine Umwandlung machen:
wert += bits[i]*(pow(2,j));um die Funktion pow() nutzen zu können musst du
#include<cmath>einbinden.
also viel spass