Hi Leute, kennt jemand eine möglichkeit größere Dezimalzahlen in Binär umzurechnen. Durch Zwei Teilen und Rest aufschreiben geht zwar, dauert aber lange. Die ganzen 2^x Werte durchprobieren ist auch nicht grade das A und O. Gibt es da vieleicht etwas schnelleres (ohne Computer, nur Blatt Papier oder Kopf) Danke
Nicht das ich wüsste. Windows-Taschenrechner raus und den umrechnen lassen? Aber im Ernst: meistens braucht man das doch gar nicht. Wozu soll ich eine Dezimalzahl binär hinschreiben, wenn ich sie genausogut auch dezimal hinschreiben kann. Sind doch ohnehin nur verschiedene Schreibweisen desselben Sachverhalts. Und irgendeinen Grund hat es ja schliesslich gehabt, warum ich von dezimal ausgegangen bin. Wenn also dezimal die natürliche Sichtweise auf die Dinge ist, dann schreib ich das auch dezimal in den Quelltext rein.
Grund ist schnelleres umrechnen inder Digitaltechnik Klausur ;)
Oh, sorry. Nein, ich kenn auch keine Eselsbrücken, wie man das schnell im Kopf erledigen kann. In dem Fall dann: leider. Hex auf binär ist ein anderes Thema. Das geht leicht und deswegen ist Hex auch so populär als 'kompakte' Schreibweise für Binärzahlen.
Karl heinz Buchegger schrieb: > Wenn also dezimal die natürliche Sichtweise auf die Dinge ist, Wieso ist denn das natürlich? Liegt nur daran, dass wir zufällig 10 Finger haben. Die Rechnerei in computerverständlicher Weise wäre für uns deutlich einfacher, wenn wir nur 8 Finger hätten. Das Dezimalsystem wäre nicht mehr als ein hypotetisches, aber völlig sinnloses System, wie etwa ein 9er oder 11er Sytem.
H.joachim Seifert schrieb: > Karl heinz Buchegger schrieb: >> Wenn also dezimal die natürliche Sichtweise auf die Dinge ist, > > Wieso ist denn das natürlich? Mit natürlich meine ich: dem Problem angemessen. Eine Minute hat 60 Sekunden, das weiß jedes Kind. Also schreibe ich auch im Programm 60, wenn es um diese Umrechnung geht und nicht 0b00111100 Anstelle von natürlich hätte ich besser 'dem Problemkreis angemessene Zahlendarstellung' schreiben sollen. Weils gerade passt: Beitrag "Re: Erste geh versuche mit AVR bitte mal anschauen" Zitat
1 | ldi temp, 0b00100011 ;den zähl wert des timers für ein sec einstellen (16bit)(62499) |
2 | out OCR1AL, temp |
3 | ldi temp, 0b11110100 |
Hä? Warum Binärzahlen? Das ist hier nicht die natürliche problembezogene Zahlendarstellung
1 | ldi temp, High( 62499 ) |
2 | out OCR1AH, temp |
3 | ldi temp, Low( 62499 ) |
4 | out OCR1AL, temp |
Viel besser.
Zahlensysteme haben unterschiedliche Ursprünge. Früher hat man eigentlich im "12er" System gerechnet, daher auch Duzend oder ein "Schock Eier" falls das noch jemand kennt. Damals waren 12 Eier in der Schachtel. In Frankreich hat man glaube ich bis 20 gezählt. Daher auch sowas wie quatre-vingt-cinq. Das heißt eigentlich 4x20 + 5 Wie auch immer, jede Kultur hatte halt ihr eigenes Zahlensystem als Sinnvoll empfunden. Aber ich muss halt Dezimal Binär schnell umrechnen können. Hex zu Binär und umgekehrt ist natürlich easy.
Hm, also ich habe die Zweier-Potenzen zuverlässig im Kopf. Das hilft ungemein und ist auch nicht viel Aufwand zu lernen. Einfach von oben nach unten die Zweier-Potenzen abziehen und jeweils eine "1" oder "0" hinschreiben. Zufälliges Beispiel: 7481. 8192 ist zu groß. Die größte Zweiter-Potenz, die hineinpasst, ist 4096. -> "1" Die 2048 brauchen wir auch noch. -> "1" Die 1024 passt noch rein -> "1" Die 512 nicht mehr -> "0" Bis hierhin habe ich im Kopf nur addiert und bin bei 7168. Die 256 passt rein -> "1" -> 7424. Damit sind wir schon im 8-Bit-Bereich, das kann ich aus dem Kopf, ab hier geht es wieder schnell. Mir fehlen 57. Das sind (gefühlt) ziemlich viele Einsen, also rechne ich lieber "invertiert": 57 ist nämlich 63 - 6, das geht schneller als 32 plus ne Menge. "6" sind die vorletzten zwei Bit, die müssen Null sein, der Rest bis aufwärts zur 32 muß "1" sein. Damit stehen die unteren 8 Bit: 00111001 Auf meinem Papier steht bis jetzt nur 1110100111001. Sollte passen. Das sind die Abläufe, wie sie in meinem Gehirn ablaufen. Ich versuche halt, Erfahrungswissen mit einzubringen, um schneller zum Ziel zu kommen. Dadurch sieht das von außen verworren aus. Eine andere Zahl könnte in meinem Gehirn auch wieder ganz anders entstehen. Aber auf jeden Fall kann ich so ohne Nebenrechnung, also bis auf die hingeschriebene Binärzahl ohne Hilfsmittel locker 16-bit-Zahlen verarbeiten. Was hilft ist einfach das Wissen der Zweierpotenzen und die Erkenntnis, dass man manchmal "invertiert" denken kann. Das heißt, man geht entweder von Einsen aus und setzt die Bits auf null, die zu viel sind, ober man geht von Nullen aus und setzt die Bits auf eins, deren Zweier-Potenz man dazunehmen muß. Je nach Zahl halt, manchmal geht Subtrahieren schneller, manchmal addieren.
Hi Wenn du die Rechnung kürzen möchtest, was spricht gegen eine Umrechnung in das Hex- oder Oktalsystem? Das erhaltene Ergebnis dann in Binär umzuschreiben ist denn nur noch "Peanuts"..... Gruß oldmax
http://manderc.manderby.com/types/umrechner/index.php super Link - macht genau das für beliebig große Zahlen !!!
Umwandlungen Hex-Dez oder Dez-Hex benötigen immer Software, die das macht. Nicht umsonst ist der printf()-Befehl in einem Echtzeitsystem oft unbeliebt, weil er zur Ausgabe einer hexadezimalen Zahl oft in dezimal umrechnen muß, und das eben ordentlich Laufzeit kostet. Die Einbindung bzw. Verwendung von printf() vergrößert den Code schon mal um 1 Kilobyte, das kommt ja nicht von ungefähr. Im Internet sollte es reichlich Beispiele für die Umsetzung solcher Rechnungen geben. Meine Buchbeispiele für den 8051 haben immer eine halbe Buchseite Länge Assemblercode, gelegentlich auch 2 Buchseiten. In Mathe an der FH lernte man die Zahlenformatumrechnungen auch, und die Programme sind einfach nur die Umsetzung der handschriftlichen Rechnung.
Beitrag #5207603 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.