aufgabe mit bitoperatoren...
-
#include <cmath> #include <iostream> using namespace std; int main(int argc, char *argv[]) { int bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7; cout<<"bit0"; cin>>bit0; cout<<"bit1"; cin>>bit1; cout<<"bit2"; cin>>bit2; cout<<"bit3"; cin>>bit3; cout<<"bit4"; cin>>bit4; cout<<"bit5"; cin>>bit5; cout<<"bit6"; cin>>bit6; cout<<"bit7"; cin>>bit7; cout << ((pow(2,7)* bit7)+(pow(2,6)*bit6)+ (pow(2,5)*bit5)+ (pow(2,4) //der fehler *bit4)+(pow(2,3)*bit3)+(pow(2,2)*bit2)+(pow(2,1) *bit2)+(pow(2,0)bit0) )<<endl; system("PAUSE"); return EXIT_SUCCESS; }
jetz so woltest du denn
mfg toni
-
Dein Thread heisst "aufgabe mit bitoperatoren...". Kommt es dir nicht komisch vor, dass du _keine_ Bitoperatoren verwendest?
Schau dir mal Bitoperatoren an, dann wirst du sehen, dass du nicht x Variablen brauchst, sondern nur eine (auch kein Array). Und die Umwandlung ist dann quasi schon gegessen.
-
ich habe shon probiert mit~|& ..etc und geht nicht
kanst du nur anfangen
-
Hallo toni!
Dein Code war schon nah drann, nur wenn du eine Fehlermeldung hast, musst du sie uns auch schicken. Ich hab das Programm jetzt mal compiliert und es kam folgende Fehlermeldung:
31 C:\Dev-Cpp\main7.cpp call of overloaded `pow(int, int)' is ambiguous note C:\Dev-Cpp\include\math.h:150 candidates are: double pow(double, double)
Daraus könnte man doch eigentlich selber drauf kommen, dass die Funktion pow double Werte erwartet. Ich hab die Funktion jetzt mal durch eine ersetzt, welche die int werte nach double castet (umwandelt).
#include <cmath> #include <iostream> using namespace std; int pow(int a, int b) { return static_cast<int>(pow(static_cast<double>(a), static_cast<double>(b))); } int main(int argc, char *argv[]) { int bit0, bit1, bit2, bit3, bit4, bit5, bit6, bit7; cout << "bit0"; cin >> bit0; cout << "bit1"; cin >> bit1; cout << "bit2"; cin >> bit2; cout << "bit3"; cin >> bit3; cout << "bit4"; cin >> bit4; cout << "bit5"; cin >> bit5; cout << "bit6"; cin >> bit6; cout << "bit7"; cin >> bit7; cout << ( (pow(2,7) * bit7) + (pow(2,6) * bit6) + (pow(2,5) * bit5) + (pow(2,4) * bit4) + (pow(2,3) * bit3) + (pow(2,2) * bit2) + (pow(2,1) * bit2) + (pow(2,0) * bit0)) << endl; system("PAUSE"); return EXIT_SUCCESS; }
Dies ist bestimmt nicht die eleganteste Möglichkeit, aber sie funktioniert soweit.
Du solltest in Zukunft auf deine Rechtschreibung achten, z.B. muss man erst raten, was du mit
hab schon vorher gelesen und gibt nicht
meinst. Denn "gibt nicht" enthält kein Subjekt und selbst "gibt's nicht" würde auch nicht sehr schlüssig sein.
mfg.
-
kann jemand eine feine beispiel shreiben?
ich habe den ganzen tag mit diese aufgabe
-
ne keine ahnung
-
toni73 schrieb:
kann jemand eine feine beispiel shreiben?
ich habe den ganzen tag mit diese aufgabe
Mein Beispiel funktioniert doch?
mfg.
-
Mein Beispiel funktioniert doch?]
ja schon aber es gibt keine Bitoperatoren
und ist nicht gewertet
-
bits |= input << i;
Die Schleife drumherum ist nun wirklich deine Aufgabe. Sonst verstehst du das nie. Ausserdem gibt es in wahrscheinlich den meisten Tutorials schöne Beispiele dazu...
-
Lies dir bitte mal in Zukunft durch was du Antwortest:
toni73 schrieb:
ja schon aber es gibt keine Bitoperatoren
Es gibt definitiv Bitoperatoren, aber wahrscheinlich meinst du, dass ich es ohne Bitoperatoren gelöst habe, oder?
und ist nicht gewertet
Meine Fresse!?!?!? Da ist kein Subjekt! Wahrscheinlich meinst du mein Beispiel, und dann frage ich: Meinst du wirlich gewertet? Bei was wurde es nicht gewertet? Oder meinst bewertet? Von wem wurde es nicht bewertet???
mfg.
-
kanst du mir sagen wo ich diese beispiele sehn kann
irgend eine internet seite bittemfg toni
-
bewertet meine ich ,von mein profesor
-
toni73 schrieb:
kanst du mir sagen wo ich diese beispiele sehn kann
irgend eine internet seite bitte
-
http://www.pronix.de/pronix-676.html
danke aber es ist für c und nich für c++
ich kenne die andere operatoren die dort stehn nicht
mfg
toni
-
Du kannst C Sachen auch in C++ benutzen. Das ganze sähe dann ungefähr so aus:
#include <iostream> using namespace std; int main(int argc, char *argv[]) { int Bit; unsigned char Zahl = 0; cout << "bit0"; cin >> Bit; Zahl |= Bit << 0; cout << "bit1"; cin >> Bit; Zahl |= Bit << 1; cout << "bit2"; cin >> Bit; Zahl |= Bit << 2; cout << "bit3"; cin >> Bit; Zahl |= Bit << 3; cout << "bit4"; cin >> Bit; Zahl |= Bit << 4; cout << "bit5"; cin >> Bit; Zahl |= Bit << 5; cout << "bit6"; cin >> Bit; Zahl |= Bit << 6; cout << "bit7"; cin >> Bit; Zahl |= Bit << 7; cout << Zahl << endl; system("PAUSE"); return EXIT_SUCCESS; }
mfg.
-
ich habe deine code compiliert und die zeigt fur dise
bit folge01010100 (*) statt (42)
was soll ich denn machen
mfg
toni
-
toni73 schrieb:
ich habe deine code compiliert und die zeigt fur dise
bit folge01010100 (*) statt (42)
was soll ich denn machen
mfg
toniUps, sorry! Das ist ein Fehler von mir: Ich hatte zu erst int, für die Zahl, hab es dann aber durch unsigned char ersetzt. Diese gibt cout aber nicht als Zahl sondern als Zeichen aus und * entspricht dann 42. Ersetze die Ausgabe Zeile mit
cout << static_cast<int>(Zahl) << endl;
mfg.
-
so klappt besten dank joomoo
wo kann ich bsp sehn es wäre für mich besser#include <iostream> using namespace std; int main(int argc, char *argv[]) { int Bit,Zahl=0; cout << "bit0"; cin >> Bit; Zahl |= Bit << 0; cout << "bit1"; cin >> Bit; Zahl |= Bit << 1; cout << "bit2"; cin >> Bit; Zahl |= Bit << 2; cout << "bit3"; cin >> Bit; Zahl |= Bit << 3; cout << "bit4"; cin >> Bit; Zahl |= Bit << 4; cout << "bit5"; cin >> Bit; Zahl |= Bit << 5; cout << "bit6"; cin >> Bit; Zahl |= Bit << 6; cout << "bit7"; cin >> Bit; Zahl |= Bit << 7; cout << Zahl << endl; system("PAUSE"); return EXIT_SUCCESS; }