actionbrowser.com
Durch deine Zustimmung wird reCAPTCHA, ein Dienst von Google zur Vermeidung von Formular-SPAM, eingebettet. Dieser Dienst erlaubt uns die sichere Bereitstellung von Online-Formularen für unsere Kunden und schließt gleichzeitig SPAM-Bots aus, welche ansonsten unsere Services beeinträchtigen könnten. Du wirst nach deiner Zustimmung unter Umständen dazu aufgefordert, eine Sicherheitsabfrage zu beantworten, um das Formular absenden zu können. Notenpapier.de - Notenheft mit Abheftmöglichkeit, mit HL. Stimmst du nicht zu, ist eine Nutzung dieses Formulars leider nicht möglich. Nimm bitte über einen alternativen Weg zu uns Kontakt auf. Google Analytics Google Analytics zeichnet Nutzer- als auch Kaufverhalten der Seitenbesucher auf. Die Daten werden für Markt und Zielgruppenforschung verarbeitet. Google Tag Manager Google Tag Manager zeichnet Nutzer- als auch Kaufverhalten der Seitenbesucher auf. Die Daten werden für Markt und Zielgruppenforschung verarbeitet.
Datenschutz-Einstellungen Einstellungen, die du hier vornimmst, werden auf deinem Endgerät im "Local Storage" gespeichert und sind beim nächsten Besuch unseres Onlineshops wieder aktiv. Du kannst diese Einstellungen jederzeit ändern (Fingerabdruck-Icon links unten). Informationen zur Cookie-Funktionsdauer sowie Details zu technisch notwendigen Cookies erhältst du in unserer Datenschutzerklärung. YouTube Weitere Informationen Um Inhalte von YouTube auf dieser Seite zu entsperren, ist deine Zustimmung zur Datenweitergabe und Speicherung von Drittanbieter-Cookies des Anbieters YouTube (Google) erforderlich. Dies erlaubt uns, unser Angebot sowie das Nutzererlebnis für dich zu verbessern und interessanter auszugestalten. Ohne deine Zustimmung findet keine Datenweitergabe an YouTube statt, jedoch können die Funktionen von YouTube dann auch nicht auf dieser Seite verwendet werden. ReCaptcha Um Formulare auf dieser Seite absenden zu können, ist deine Zustimmung zur Datenweitergabe und Speicherung von Drittanbieter-Cookies des Anbieters Google erforderlich.
#1
Hallo,
wir haben heute in der Berufschule folgende Aufagbe bekommen:
Planen und schreiben Sie ein Programm, welches eine beliebige Dezimalzahl in eine Binärzahl umwandelt. Ich habe dann ein PAP (Programmablaufplan) erstellt und einen Schreibtischtest durchgeführt. Schon hier habe ich gemerkt, dass in meiner Planung ein Fehler ist. Trotzdem habe ich das Programm implementiert, um vllt. so an des Rätsels Lösung zu kommen. C binärzahl zuweisen excel. Hier das Programm:
Code:
//---------------------------------------------------------------------------
/*
Datum: 10. 11. 2008
Name:
Beschreibung: Umrechnung Dezimal in Binär
*/
#include
Häh? Also% oder Modulusoperator ist nur erlaubt für ganze Zahlen, int, long und Verwandte. Der Wert der raus kommt ist der Rest der nach der Division übrigbleibt. Beispiel: int x, y, z; y = 10; z = 3; x = y / z; // Ergebnis: x ist 3 x = y% z; // Ergebnis: x ist 1; drei mal drei gleich neun, Rest 1 x = y% 0 // Ergebnis; x ist y (per Definition); teilen durch Null ist zwar verboten, aber der Rest ist die Zahl selber Der -- und ++ Operator verringert/erhöht den Wert um eine Einheit. Bei int und long Variablen ist diese Einheit eins. Bei einfachen Konstrukten wie z. : int x, y; x = 10; x--; // Ergebnis: x ist 9 y++; // Ergebnis: y ist 11 ist die Anwendung ziemlich klar. Man kann diese Operatoren vor- oder hinter die Variable setzen. Beispiel: x = y++; // Ergebnis: x ist 10 und y ist 11; die Zuweisung x = y; erfolgt zuerst, danach wird y inkrementiert. C binärzahl zuweisen synonym. x = ++y; // Ergebnis: x ist 11 und y ist 11; zuerst wird y inkrementiert, dann wird x = y zugewiesen. Die Sprache C++ (Zäh platsch platsch wie der kongeniale Schockwellenreiter zu sagen pflegt), die objektorientierte Weiterentwicklung von C, bedeutet also: C + 1.
Was ist die Ausgabe? x% 1 ergibt übrigens immer 0, da jede Zahl vollständig durch 1 teilbar ist. Binär basiert aber auf der Basis 2, also musst du durch 2 teilen. #3 Zitat von Taxotic: Sollte das nicht lauten?? #4 nur mal so wenn du zuerst teilst, hast du schon ein Bit verloren.... i% macht keinen Sinn bei printf und scanf... #5 Naja, ich soll ein Programm schreiben, dass eine Dezimalzahl in eine Binärzahl umwandelt. Das x%1 nicht geht stimmt, da habe ich wohl nicht richtig nachgedacht. Wenn ich jetzt jedoch x%2 schreibe, rechnet er ja im vorherigen Schritt ja schon x=x/2, sodass im nachfolgenden Schritt das "neue x"%2 geteilt wird. bsp: 90/2=45. 0 45%2= Rest 5... aber er soll ja auch den Rest 0 von 90%2 vermerken.... Reicht es, wenn ich also die If Bedingung VOR das x=x/2 setzte? Rheinwerk Computing :: C von A bis Z – 11.11 Strings/Zeichenketten (»char«-Array). Edit: mit dem%i habt ihr ich das geschrieben habe weiß ich nicht, da habe ich was durcheinandergebracht, danke! Zuletzt bearbeitet: 11. Juli 2012 #6 for (i=7;i=1;--i) Hier ist ein böser Anfängerfehler versteckt, der nicht passieren sollte #7 Zitat von PWA: Jipp, es liegt aber nicht am -- bzw. ++ #8 for (i=7;i>=0;i--) bzw for (i=0; i<=7; i++) richtig?
Wiederholen Sie nun diese Schritte für alle Zahlen. Als Ergebnis sollten Sie nun "0 ⋅ 2⁰ + 1 ⋅ 2¹ + 0 ⋅ 2² + 1 ⋅ 2³ + 0 ⋅ 2⁴ + 1 ⋅ 2⁵" erhalten. Anschließend können Sie die Potenzen in normale Ganzzahlen umrechnen: "0 ⋅ 1 + 1 ⋅ 2 + 0 ⋅ 4 + 1 ⋅ 8 + 0 ⋅ 16 + 1 ⋅ 32". Ausgerechnet ist die Zahl "101010" im Dualsystem im Zehnersystem die Zahl "42". Tipp: Falls Ihnen dieser Rechenweg zu schwierig sein sollte, können Sie sich auch die Tabelle einprägen, die Sie oben im Bild sehen. Binärzahl in Dezimalzahl - so geht's Dezimalzahl in Binärzahl umrechnen Eine Zehnerzahl in eine Binärzahl umzurechnen, ist sogar noch einfacher, als eine Binärzahl in eine Dezimalzahl umzurechnen. In diesem Beispiel verwenden wir wieder die Zahl "42". Teilen Sie diese Zahl durch 2: "42: 2 = 21 Rest 0". Teilen Sie anschließend das Ergebnis der vorherigen Rechnung wieder durch 2: "21: 2 = 10 Rest 1". C binärzahl zuweisen 2020. Wiederholen Sie diese Schritte mehrmals, bis Sie zur Rechnung "0: 2 = 0 Rest 0" kommen. Ab hier käme immer das gleiche Ergebnis; Sie können mit der Rechnung also aufhören.
(nur größer als der amximale string) 6 "darthdespotism" wrote: Das Problem mit deiner Methode ist, dass es schon bei relativ kleinen Dualzahlen schluss ist, da die dann ja in rießigen dezimalzahlen ab gebildet werden. Versteh ich nicht. Das in einen String zu schreiben und den dann auszulesen macht überhaupt keinen Sinn und man verschwendet massiv Rechenleistung für etwas, was du eigentlich gar nicht willst. Das alles um nicht nachdenken zu müssen? Binär- und Hexadezimalzahl umrechnen - so geht's - CHIP. Grausam! 7 Du willst Dualzahlen in Dezimale umwandeln und nimmst int: Jetzt versuchst du 110100110010 umzuwandeln, ist ja nur 3378. Wenn du jetzt aber beispielsweise so an die Zahl kommen willst: int i; scanf("%d", &i); wirst du feststellen, dass die Dualzahl bereits viel zu groß für deinen int ist. Du kannst jetzt unsigned int verwenden, long oder gar unsigned long, aber damit verschiebst du das Problem nur. Mit einem char bin[31] hast du genug platz um jede binärzahl, die sich in einen int umwandeln lässt zu speichern. 8 Wenn der die Eingaben sowieso von stdin oder argv ließt isses eh ein String und muss sowieso konvertiert werden.
There are only 10 types of people in the world: Those who understand binary, and those who don't. Download meines ersten Spiels: HIER
Über Feedback würde ich mich freuen
4
Hey des hört sich ganz logisch an! Aber leider bin ich noch ein Anfänger. Kannst du das für mich vllt in C umschreiben?? C - Kurs Operationen mit Variablen. wäre sehr net von dir
5
#include