Zahl -> Bit ausgabe
-
Aoki_san schrieb:
32 Stellen:
1000 0000 0000 0000 0000 0000 0000 0000
2 stellen
100Interessante Art zu zählen.
-
Aoki_san schrieb:
32 Stellen:
1000 0000 0000 0000 0000 0000 0000 0000
2 stellen
100Fällt dir da gar nicht auf? Ok, dann eben explizit: Gib mal zu jeder Zahl zwischen 2 und 32 an, wo die 1 landet, wenn du sie um diese Anzahl stellen nach links verschiebst.
-
Achsoo oops
sorry
-
Das heißt aber das ich nur die 32 in 1 umändern muss
Aber wieso funktioniert das programm immer noch nicht korrekt? :///#include <iostream> using namespace std; int main() { // your code goes here unsigned Zahl = 1; for (int i = 0; i < 32; ++i){ if (Zahl&(1 << 1) != 0) cout << 1 << " "; else cout << 0 << " "; Zahl = Zahl << 1; } return 0; }
-
if (Zahl&(Zahl << 0) != 0)
Rätst du bloß?
edit: Jetzt hast du editiert und daraus(1 << 1)
gemacht. Was meine Vermutung mit dem Raten nochmals untermauert. Was ist denn1 << 1
deiner Meinung nach?Das heißt aber das ich nur die 32 in 1 umändern muss
Ich kann deine Gedanken überhaupt nicht mehr nachvollziehen. Welche Schlüsse hast du denn aus meiner Bemerkung zur 32 gezogen, die dich zu obigem Zitat bringen?
-
Ne habe gerade gesehen das ich die falsche ideone seite offen hatte
(Habe mehrere codes auspeobiert da keines zum richtigen ergebnis führte)
Die eigentliche if anweisung war if(Zahl&(1 << 1)!=0);
-
Nunja wenn ich auf 1 stehe und jedesmal 32 weiter nach linkslaufe überschreite ich die eigentliche grenze nach einem durchlauf oder nicht? Deshalb hab ich es auf 1 gesenkt
-
Aoki_san schrieb:
(Habe mehrere codes auspeobiert da keines zum richtigen ergebnis führte)
Also liege ich richtig mit der Annahme, dass du gerade nur wild herum probierst.
Zitat eines früheren Moderators:
c.rackwitz schrieb:
Wenn du selber Code schreibst, musst du ihn auch verstehen. Code ist kein Haufen von wahllos zusammengeschmissenen Buchstaben und Zeichen, Code ist Logik pur. Du musst genau wissen, warum du wo und welches Zeichen setzt.
Was ist denn (1 << 1)? Was willst du an der Stelle haben? Hast du überhaupt verstanden, was & und << machen? Was ist die Idee an diesem Code? asfdlol hat sie ja eigentlich schon recht schön und ausfühlrich erklärt, aber du scheinst bloß blind seinen Ansatz genommen zu haben, ohne ihn zu verstehen (möglicherweise nicht einmal versucht, ihn zu verstehen?) und versuchst nun verzweifelt zu raten, was an die Stellen kommt, die asfdlol bewusst frei gelassen hat.
-
Nein ich rate nicht ich denke und probiere es aus.
Ich habe mir gedacht das die 1 ja bei 32 bit so dargestellt wird :
0000 0000 0000 0000 0000 000 0 0000 0001
Und die Zahl die eingegeben wurde ja
Auch 0000 0000 0000 0000 0000 0000 0000 0001
Ist und durch Zahl&(1 << 1) der wert der hinter (1 << 1) steckt binär umgewandelt wird danach werden die binär zahlen nach jeder schleife verglichen da in den klammer 1 << steht wird auch nah jeder schleife die binärzahl um eines verschoben der wert der in der mask gespeichert wird kann damit nur 0 oder 1 sein wenn sich also mask(wert 1) und mask (zahl) treffen sollten wird eine eins ausgegeben und je länger ich darüber nachdenke wird mir klar das ich es richtig gemacht habe nur wird bei dieser schleife nicht vorne sondern hinten angefangen und deshalb steht der letzte wert vorne und nicht hinten hmm dann muss ich wohl schauen wie ich das ändern kann ich hoffe ihr könnt mir noch folgen
-
Oh man, I pack it not.
Ein waschechter Infinite Monkey Programmer.
-
Jap ich merke es auch gerade -.-
Boa naja egal ist jetzt auch nicht mehr so wichtig
-
Aoki_san schrieb:
Ist und durch Zahl&(1 << 1) der wert der hinter (1 << 1) steckt binär umgewandelt wird danach werden die binär zahlen nach jeder schleife verglichen da in den klammer 1 << steht wird auch nah jeder schleife die binärzahl um eines verschoben der wert der in der mask gespeichert wird kann damit nur 0 oder 1 sein wenn sich also mask(wert 1) und mask (zahl) treffen sollten wird eine eins ausgegeben und je länger ich darüber nachdenke wird mir klar das ich es richtig gemacht habe nur wird bei dieser schleife nicht vorne sondern hinten angefangen und deshalb steht der letzte wert vorne und nicht hinten hmm dann muss ich wohl schauen wie ich das ändern kann ich hoffe ihr könnt mir noch folgen
WTF?
Das ist a) gibberish und b) die Teile wo man erahnen kann was du meinst sind purer Unsinn.z.B.
da in den klammer 1 << steht wird auch nah jeder schleife die binärzahl um eines verschoben
Nein, nein, nein, nein!
1 << 1 ist einfach ein Ausdruck, der den Wert 2 hat. Dabei wird *nichts* modifiziert, und es kommt auch bei jedem Schleifendurchlauf das selbe raus. Du könntest statt 1 << 1 genau so gut direkt 2 hinschreiben.
Tippst du das vielleicht von jmd. ab und verwechselst dauernd 1 und i?
-
Aoki_san schrieb:
Jap ich merke es auch gerade -.-
Boa naja egal ist jetzt auch nicht mehr so wichtigHihi.
Dir ist schon klar dass ich dich und nicht SeppJ gemeint habe mit dem I.M.P.?
-
Ne ist ja jetzt eigtl auch egal ich denke in die falsche richtung was deshalb wollte ich fragen ob ihr es vllt auflösen könnt
-
hustbaer schrieb:
Aoki_san schrieb:
Jap ich merke es auch gerade -.-
Boa naja egal ist jetzt auch nicht mehr so wichtigHihi.
Dir ist schon klar dass ich dich und nicht SeppJ gemeint habe mit dem I.M.P.?Schon klar
-
Wenn du dir angewöhnen würdest, immer Satzzeichen (oder allgemein: Grammatik) zu benutzen, und nicht nur wenn man dich explizit drauf anspricht, dann kann man dich vielleicht auch verstehen. Ich jedenfalls habe keine Lust, deine Beiträge 50x zu lesen und alle möglichen Permutationen der Kommasetzung im Kopf durch zu gehen um am Ende ungefähr erahnen zu können, was du meinst.
Das Problem ist noch viel schlimmer, wenn du auch so programmierst, wie du schreibst. Der Computer macht nämlich wortwörtlich das was du ihm sagst, nicht das, was du meinst. Wenn du nicht lernst, dich vernünftig auszudrücken, dann macht er eben nicht das, was du möchtest.Ich sehe jedenfalls keinen Sinn, hier weiter zu helfen, wenn du deine Art nicht massiv änderst. Seit deinem explizit korrigierten Beitrag vor ein paar Seiten ist der einzige Beitrag von dir, dessen Inhalt ich verstehen konnte dieser hier:
Schon klar
Siehe auch:
http://www.tty1.net/smart-questions_de.html#writewell
-
Ja, für die Grammatik muss ich mich entschuldigen.
Bis eben gerade war ich noch am Handy und habe versucht alles schnell einzutippen.^^
Naja, jetzt bin ich aber wieder am Rechner und schaue mal wo mein Problem liegt...
Denke ich vielleicht nicht logisch genug oder ist die Aufgabe einfach nur zu schwierig für einen "Anfänger"?(Btw. bis vor 10h Dachte ich noch, dass ich eigentlich ganz gut programmiere, obwohl ich alle Kapitel meines Buches überflogen habe. Dem ist aber nicht so... Jetzt muss ich komplett von vorne anfangen, da mir einfach zuviel entgangen ist wie ihr sehen könnt.)
-
Aoki_san schrieb:
Denke ich vielleicht nicht logisch genug oder ist die Aufgabe einfach nur zu schwierig für einen "Anfänger"?
Wenn du so direkt fragst: Ersteres.
Die Aufgabe ist nicht schwer und du scheinst an sich durchaus in der Lage zu sein, Code zu schreiben. Dir wurde auch erklärt (ganz am Anfang des Threads), was zu tun ist. Dann wurden dir Hinweise auf mögliche Fehler gegeben. Und dann wurde es irgendwie merkwürdig, weil du anscheinend gar nichts davon kapiert hast, so dass die Hilfe völlig nach hinten los ging und du anfingst, wild herum zu raten.Lies nochmal ganz langsam den Thread. Mach dich auch kundig, was & und << tun. Frag nach, wenn irgendwo Zweifel vorliegen. An sich sind alle nötigen Informationen schon ein oder mehrmals genannt worden.
-
SeppJ schrieb:
Lies nochmal ganz langsam den Thread. Mach dich auch kundig, was & und << tun. Frag nach, wenn irgendwo Zweifel vorliegen. An sich sind alle nötigen Informationen schon ein oder mehrmals genannt worden.
Genau das.
@Aoki_san: Schreib dir einfach mal ein paar zufällige Zahlen zur Basis 2 (Bitweise) auf ein Blatt Papier und gehe dann durch was beim Shift passiert (links sowie rechts).
Außerdem solltest du das gleiche mit Bitmasken testen. Das Bitweise AND brauchst du hier unbedingt und es kann nicht so schwer sein, herauszufinden, wie alle bits außer das LSB oder eben das MSB löschst (auf 0 setzt).
Frage für dich:
0110 1011 & xxxx xxxx ----------- yyyy yyyy
Wie sähen x... und y... aus, wenn du jeweils das MSB (das Most-Significant-Bit, das "höchste", in dem Fall das achte Bit oder das Bit Nummer 7 (ganz Links)) oder das LSB (das Least-Significant-Bit, das "niedrigste" oder "niederwertigste", in dem Fall das erste Bit oder das Bit Nummer 0 (ganz rechts)) rausziehen willst, bzw. alle anderen bits löschen willst?
-
Ich fordere von unseren Fragestellern ein wenig mehr.
closed