Seite 1 von 1
Bitwandler.py
Verfasst: Dienstag 24. August 2010, 18:40
von 3ff
Hallo,
ich hab 1 Script geschrieben, um Anfängern im Betrieb zu zeigen, wie Bitmanipulationen ,mit python gemacht werden.
Das liegt in der pastebin.
Kann man die Funktion setze nicht einfacher machen bzw. anders lösen? Es soll aber 1 String bleiben.
Ich will mit 4 bit auskommen damit es übersichtlich bleibt. Weiterhin will ich den Befefehlssatz des Intel 4004 zeigen auch für Anfänger, die dann am Beamer sehen können, was
1.der Befehlssatz
2.Adressierungsart
ist.
Danke Fritz
Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 18:55
von DaMutz
hier einmal der Link:
http://www.python-forum.de/pastebin.php ... ght=python (einen Link macht man indem man auf den URL Button bei der Texteingabe klickt.)
deine 'setze'-Funktion kannst du kürzer schreiben, wahrscheinlich ist sie damit gar nicht mehr nötig:
Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 18:56
von Hyperion
Du müßtest den Link wohl noch nachschieben
Was ist konkret Deine zweite Frage? Vor allem: Wieso erstellst Du dafür nicht einen neuen Thread. Das passt inhaltlich doch überhaupt nicht zusammen! Somit wird wohl niemand etwas zum Inhalt sagen, der nicht zufällig über den Thread stolpert. Außerdem solltest Du da wesentlich mehr zu sagen und beschreiben, was Du eigentlich suchst. So versteht das kein Mensch und würde Dir nur antworten: "Dann drucke Dir den Befehlssatz aus und verteile ihn"
Nebenbei ist der inhaltliche Aufbau wieder extrem desolat. Wieso schließt sich Thema Nummer 2 direkt im selben Absatz an das alte Thema an? Ansonsten nutzt Du doch auch immer genau einen Absatz für einen Satz

Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 19:01
von cofi
Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 19:04
von BlackJack
@3ff: Gut dass Du ihnen nur das mit den Bits zeigen wolltest und nicht wie man in Python programmiert. SCNR
Die `setze()`-Funktion könnte man zuallererst einmal in etwas Bezeichnenderes umbenennen. Unter `setze()` hätte ich eine Funktion erwartet die ein bestimmtes Bit setzt, aber nicht eine Funktion die ganze Zahlen zwischen 0 und 15 in eine vierstellige Zeichenkette mit einer Darstellung der Zahl zur Basis 2 umwandelt.
Die Einrückung entspricht nicht den üblichen Konventionen.
Natürlich müsste man nicht in jedem ``elif``-Zweig eine Zuweisung an `j` *und* ein ``return`` stehen haben. Die Zeichenketten per Konkatenation von jeweils vier einzelnen Zeichen ist auch unnötige Tipparbeit gewesen. Und da Du eine Abbildung von Zahlen auf Zeichenketten hast, hättest Du die ganzen Verzweigungen auch ganz einfach durch einen Indexzugriff in eine Liste mit den Ergbnissen schreiben können.
Man hätte natürlich auch eine Funktion schreiben können, die das Ergebnis nicht aus einer Tabelle holt, sondern tatsächlich berechnet. Dann könnte man auch beliebig grosse Zahlen umwandeln. Auch wenn man bei 4-Bit bleiben möchte, wäre eine allgemeine Lösung hier IMHO vorzuziehen.
Klammern um Bedingungen sind unnötig und man sollte die Bedingung mit Klammern auch nicht so dicht an das Schlüsselwort rücken. ``if`` und Co. sind ja schliesslich keine Funktionen.
Statt die Zeichenkette "fejhler" (sic.) zurückzugeben, sollte man im Fehlerfall eine Ausnahme auslösen.
Bei den Funktionen zu den Bitoperationen ist wieder das unnötige Binden an `j`. Ausserdem gibt's die Funktionen schon fertig im `operator`-Modul.
`string.atoi()` sollte man nicht mehr verwenden. Die `int()`-Funktion existiert.
Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 20:13
von 3ff
@DaMutz,
Danke werds versuchen, aber es sieht gut aus.
Frage:
Wie find ich denn Deinen Link wieder?
Auf den Button URL clicken aber welche URL geb ich ein?
Ist die URL immer die gleiche für die Pastebin?
@Hyperion,
den Befehlssatz kopieren?
den will ich ja grade erklären als Bitmuster
Grüße Fritz
Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 20:34
von 3ff
@DaMutz
danke, es geht.
der neue Code steht auch in der Pastebin
muss ich jetzt die gleiche URL angeben, wie Du?
ganz verstanden hab ich ichs noch nicht, aber das muß ich erstmal in aller Ruhe in meiner Python-Bibel nachlesen.
Guude!
Fritz
Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 22:46
von 3ff
@DaMutz
in der Pastebin liegt format-1.py. Jetzt hab ich auch verstanden, was Du gemacht hast.
danke nochmal!
http://www.python-forum.de/pastebin.php ... ght=python
Fritz

Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 22:54
von 3ff
@Hyperion und die anderen "Quälgeister"
Antwort gibts später, bin erstmal froh, das es mit dem Quelverweis zur Pastentonne geklappt hat.
Deutsches Sprichwort: Man wird so alt wie jede Kuh und lernt immer noch dazu
Fritz

Re: Bitwandler.py
Verfasst: Dienstag 24. August 2010, 23:21
von Hyperion
3ff hat geschrieben:
Deutsches Sprichwort: Man wird so alt wie jede Kuh und lernt immer noch dazu
Die Kuh trinkt Wasser und kein Rum, nach 20 Jahren fällt sie um!

*spuk*
Re: Bitwandler.py
Verfasst: Mittwoch 25. August 2010, 06:36
von 3ff
@Hyperion
Du hast geschrieben:
Die Kuh trinkt Wasser und kein Rum, nach 20 Jahren fällt sie um!
esta bueno!
Ich besorg mir heute morgen den Befehlssatz vom 8080, dann gehts los.
Fritz
Re: Bitwandler.py
Verfasst: Mittwoch 25. August 2010, 09:48
von Hyperion
3ff hat geschrieben:@Hyperion
Du hast geschrieben:
Die Kuh trinkt Wasser und kein Rum, nach 20 Jahren fällt sie um!
Wow! Dein erstes Quoting - langsam wirds
esta bueno!
Ich besorg mir heute morgen den Befehlssatz vom 8080, dann gehts los.
Fritz
Ich dachte 4004? Den konnte man via wikipedia recht schnell auftreiben.
Re: Bitwandler.py
Verfasst: Mittwoch 25. August 2010, 10:18
von sma
Unter Bitmanipulation würde ich den Einsatz der &, |, ^ und ~ Operatoren verstehen, nicht jedoch, wie man Zahlen zur Basis 2 darstellt.
Neulich hat doch jemand einen kompletten Z-80-Emulator in JavaScript (als Teile eines Gameboy-Emulators) vorgestellt. Da der 4004 ja nur 2 Seiten mit Instruktionen hat und sehr einfach aufgebaut ist, könnte man doch schnell einen 4004-Emulator in Python bauen und an diesem dann die Bitmanipulation erklären. 0x42 0x56 wäre ja z.B. ein Sprung zur Adresse 0x256. Offenbar kann man ja an den höheren 4 Bit des Befehlsbytes erkennen, was für ein Befehl bzw. was für eine Befehlsgruppe das ist und die unteren 4 Bit sind dann Operand oder der genaue Befehl. Einige Befehle haben ein zweites Byte als Operand. Mit zwei verschachtelten Sprungtabellen oder einfach langen if/elif-Kaskaden kann man hier den Befehl erkennen und dann simulieren. An Registern gibt es offenbar IP, SP, A und 16 Indexregister. Außerdem habe ich beim Überfliegen der Spec die Flags C (carry), T (test) und Z (zero) gesehen. Das könnten alles Attribute eines Exemplars einer Klasse "I4004" sein, die Befehle jeweils Methoden.
Stefan
Re: Bitwandler.py
Verfasst: Mittwoch 25. August 2010, 15:43
von 3ff
@Hyprion
Gut Ding will Weil haben, aber ohne den richtigen Coach (hier DaMutz) wirds halt nichts.
Zum Bitwandler: stellt euch nichts kompliziertes vor. Ich werd/muß Vorträge halten mit dem Beamer und die Umrechnung Hex-> Bin macht dies Programm.
Auf Maschinenebene läuft natürlich alles im Bitcode ab. Die Darstellung ist in Latex, was wiederum hier offtopic wäre.
Meine Zuhörer wissen grad mal was der Binärkode ist, von Subtraktion im 2-er Kompliment haben die noch nichts gehört.
Ich hab auch 1 Buch gefunden über den Intel 8080.
Zur Darstellung der Blockschema wird Autocad genommen- also dxf-Dateien- und 1 Convertierungsprogramm in Python, für viele kalter kaffee, aber für die Newbees wichtig, die Grundlagen zu erlernen.
Es ist auch nicht damit getan, den Befehlssatz "runterzubeten" sondern man kann die Struktur einer 1 Adessmaschine nur verstehen, wenn man DIE 3 Grundfunktionen kennt:
1.Befehl reinholen
2. Befehl decodieren
3. Befehl ausführen
Nochwas: ich werd auch 1 neue Rublik (Thread) aufmachen!
Gut für heute erstmal!
Grüße Fritz

Re: Bitwandler.py
Verfasst: Mittwoch 25. August 2010, 15:59
von Hyperion
3ff hat geschrieben:@Hyprion
Gut Ding will Weil haben, aber ohne den richtigen Coach (hier DaMutz) wirds halt nichts.
Genau, hier ja. In anderen Threads waren es auch schon andere. Aber immerhin ist ja nun Bereitschaft vorhanden

Re: Bitwandler.py
Verfasst: Mittwoch 25. August 2010, 21:38
von 3ff
@Hyperion
als Akkordeonspieler sag ich dazu:
Immer langsam voran, immer langsam voran, damit der Krähwinkler Landsturm folgen kann.
Das ist 1 altes Karnevalslied hier aus Mainz.
Helau
Fritz
