Probleme bei der Umrechnung
-
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