Schaltterm für ungültig verschlüsselte Pseudotetrade ermitteln?

3 Antworten

In der Aufgabe steht es sollen zehn dezimal Ziffern in BCD codiert werden... Dein "Problem" hast du asserhalb der zehn dezimalen Ziffern.

Also alles außerhalb 0-9 ist ungültig. Du brauchst also irgendwas was deine Verschlüsselung in dezimal decodiert und das was nicht der Codierung entspricht ist ungültig.

Gruß

Woher ich das weiß:Berufserfahrung

Pheonix1234 
Fragesteller
 21.04.2020, 23:07

Ich weiß nicht ob du die Aufgabe vollständig gelesen hast, aber in der Teilaufgabe b) steht, dass ich einen Schaltterm ermitteln soll der testet ob eine ungültige verschlüsselte Pseudotetrade vorliegt.

Pseudotetraden sind die Tetraeden die den Dezimalzahlen 10 - 15 entsprechen, folglich muss ich ja mit den Pseudotetraden arbeiten. Gehen wir mal davon aus, dass ich selber einen BCD- Wandler entwickel, der als Input jede Tetraede annimmt und diese dann verschlüsselt. Dann muss ja letztendlich geprüft werden, ob diese verschlüsselten Tetraeden auch wirklich richtige Tetraeden sind oder eben nur Pseudotetraeden. Und dies muss ich mit einem Schaltterm testen.

Es kann auch sein, dass ich die Aufgabe falsch verstanden habe, wenn dies der Fall ist, könntest du mir dann bitte erklären wie du diese Aufgabe verstehst und wie du sie lösen würdest. Ich brauche nicht die komplette Lösung, mir muss nur mein Verständnisfehler erklärt werden.

0
MostWanted288  21.04.2020, 23:33
@Pheonix1234

Okay, der Wandler der den Wert verschlüsselt gibt dir eine 4 bit variable raus. Es werden nicht auf einmal 5 bits es bleibt bei 4, ein Überlauf kommt zu stande. Der höchster bit fällt weg.

Also bekommst du einen verschlüsselten 4 bit variable jetzt sollst du diesen Wert auf A-F prüfen. Wenn zutrifft dann Ausgang TRUE.

Würde unvereinfacht so aussehen :

IF (NOT 3y AND 2y AND NOT 1y AND NOT 0y) OR....

Falls du das nicht verstehst muss ich Blatt und Stift holen 😅

1
Pheonix1234 
Fragesteller
 21.04.2020, 23:41
@MostWanted288

Okay doch nicht so ganz. Du sagst, dass wenn ein Überlauf zustande kommt, also z.B. bei der Addtion von 1110 und 0010, dass ich den höchsten Bit einfach wegstreiche. Bei der Addition kommt dann ja 10000 raus, also streiche ich jetzt einfach die 1 weg, so dass ich 0000 habe. Und dann ist 0000 jetzt meine verschlüsselte Tetraede?

0

Ich verstehe zwar all die schönen neuen Begriffe nicht, kenne Digitaltechnik (also auch Logik-Glieder) von früher. Mehrere dekaden früher.

Wenn du schiebst sagst du, dass aus vier fünf Bit werden. Es gibt aber drei Möglichkeiten zu schieben. In den nächsten Varianten wird im Kreis geschoben. Also was hinten raus geht geht vorne rein. Eine davon über Carry, eine ohne (also direkt). So bleiben es immer vier Bit.

Natürlich kannst du in deiner Variante auch das fünfte Bit einfach ins jenseits schicken. Dann hast du auch nur vier Bit.

Hilft dir das weiter?


Pheonix1234 
Fragesteller
 21.04.2020, 22:24

Bei mir werden, bei der Addition aus vier Bits fünf Bits. Also wenn ich zu 1110 0010 dazu addiere bekomme ich 10000. Und nun muss ich ja laut der Aufgabenstellung, das erste und letzte Bit vertauschen und komme somit auf 00001. Was ich schon als Ergebnis hatte, wenn ich zu 0110 0010 hinzuaddiere. Also ich schiebe hier eigentlich nicht wirklich, oder habe ich da was falsch verstanden. In der Aufgabenstellung steht ja auch nichts davon, dass ich schieben soll.

Ich weiß nicht ob ich dich richtig verstehe, aber meiner Meinung nach schiebe ich hier nie.

0
citkid  21.04.2020, 23:20
@Pheonix1234

Habe ich wohl nicht gut genug gelesen.

Also ich habe erst die Hardware kennengelernt, dann das ganze über die Software.
In der Hardware hast du z.B. ein 4Bit-Register. Bei einer Addition mit einem Übertrag geht der Übertrag verlohren, bzw. wird über ein Extra-Pin (ähnlich Carry) angezeigt. Wenn deine Hardware aber nur für 4Bit ausgelegt ist, gehen Überträge verloren.

Ich habe den Unterricht ja nicht mitgemacht und kann somit nicht sagen, was der Pauker/Dozent sich dabei gedacht hat oder wie die Rahmenbedingungen gesteckt sind. Hier bist du gefragt.

Aber du kannst ja mal einen Versuch starten mit echten 4Bit. Wenn dann das Ergebnis deinen Vorstellungen entspricht hast, du wohl die richtige Lösung gefunden.

1
Pheonix1234 
Fragesteller
 21.04.2020, 23:22
@citkid

Okay, vielen Dank. Dann werde ich mal probieren die Aufgabe so zu lösen in dem ich das 5te Bit weglasse.

0
citkid  22.04.2020, 00:10
@Pheonix1234

Ich glaube, ich habe jetzt die Aufgabe endlich verstanden (bei meiner Erklärung schenke ich mir jetzt mal wie BCD kodiert ist und verwende Binär. sonst müßte ich den BCD-Code heraussuchen):

10 x BCD heist:

8421 8421 8421 ..... 8421 (bzw. 3210 3210 3210 ..... 3210)

Ich bestrachte jetzt mal nur die unteren 2 BCDs:

0100 1010 -> Binär = 4A
0000 1000 -> addiere 08
0101 0010 -> Ergebnis 92

Du must den Übertrag ja in die nächst höhere Zahl übernehmen.

Vergleiche Dezimalsystem:

08+02 sind ja auch nicht 0(Carry+0) sondern 10. Also 10er und 1er.

Die addition und das Bit-tauschen aber innerhalb jedes BCDs. Übertrag immer ins nächste BCD.

Das sollte es sein.

0
Pheonix1234 
Fragesteller
 22.04.2020, 00:30
@citkid

Also ich verstehe das nur teilweise. Also ist, es falsch wenn ich so wie folgt vorgehe?

Ich habe die Pseudotetraede 1110 und diese wird verschlüsselt, also addiere ich 0010 dazu und komme auf 10000. Jetzt (aus einer anderen Antwort kam das hervor), streiche ich einfach das höchste Bit weg, also die 1 und habe 0000 als verschlüsselte Tetrade. Das ist jetzt falsch oder was?

Deine Antwort interpretiere ich jetzt so:

also du hast die eine Tetraede 0100 und die andere Tetraede 1010. Was zwei aufeinander folgende Tetraeden sind. Dann hast du dahinter aber 4A stehen, also 74 in Hexadezimal, aber ich weiß nicht woher das kommt. Weill wenn ich die beiden Tetraden zusammen nehme zu einem Byte, dann komme ich da auf 138, deswegen bin ich da schon etwas verwirrt. Dann addierst du dazu 0000 1000 also 8 in Dezimal, aber woher kommt denn die acht. Ich soll mit 0000 0010 also 2 in Dezimal addieren. Ich gehe jetzt davon aus, dass du die Tetraeden nicht als einzelne Zahlen betrachtest sondern als eine Zahl, also ein Byte und wenn das so ist, dann verwirrt es mich noch mehr, weil du sagst, dass das Ergebnis 92 ist. Aber ich komme nie auf 92, egal wie ich deine Dualzahlen interpretiere. Also du hast da 0100 1010 was eigentlich entweder 4 und 5 ist in Dezimal oder 138. Dahinter steht dann aber wieder 4A, was 74 ist. Dann addierst du aus mir nicht ersichtlichen Gründen 1000 also 8 dazu. Und dann kommst du auf 94. Wenn ich zu 4A also 74, 8 hinzu addiere dann komme ich auf 82.

Es tut mir leid, wenn ich hier irgendwas komplett falsch verstanden habe, aber ich bitte um eine Erklärung.

0
citkid  23.04.2020, 23:24
@Pheonix1234

Ich habe leider keine Mail mit dem Hinweis erhalten, dass du hier einen Eintrag erstellt hast. Deshalb erst jetzt eine Antwort.

Für jemandem, der einem anderen etwas erklären will, habe ich diverse Fehler gemacht. Ich arbeite ausschließlich im Binär-Code und konnte mich nicht mal so eben auf BCD umstellen. Was ist BCD-Code? Eigentlich nichts anderes als eine codierte Darstellung des Dezimal-Codes (Ziffern 0-9) oder des Hexadezimal(Sedezimal)-Codes (Ziffern von 0-F). Habe extra noch mal bei Wikipedia reingeschaut und musste feststellen, das ich früher gar nicht bemerkt habe, dass der BCD-Code (Ziffern von 0-F) eigentlich Binärcode ist. Das habe ich jetzt erst aufgelöst.

In deinem Fall also Binär aber begrenzt von 0-9 und das nennt sich dann BCD-Code (Ziffern 0-9) und du sollst versuchen herauszufinden, ob nach der Verschlüsselung immer noch BCD-Code für 0-9 vorliegt oder bereits auch A-F verwendet wurde. Was ja echten Binär-Code bedeutet. Und das würde ein BCD zu Dezimal-Converter nicht mehr interpretieren können und du könntest das Ergebnis nicht lesen. Da der normale Mensch ja nur das Dezimalsystem beherscht.

Stelle dir vor, jede BCD-Stelle ist ein IC (gibt es tatsächlich, siehe 4000er-Serie). Du sollst 10 IC's in Reihe schalten (von rechts nach links). Dabei entspricht das 1. IC der 1er-Stelle, das 2. IC die 10er-Stelle, das 3. IC die 100er-Stelle ..... und das 10. IC die Milliarden-Stelle. Jedes mal wenn eine Stelle einen Übertrag erzeugt muss dieser in die nächst höhere Wertezahl übernommen werden. Da das ganze ja eigentlich nichts anderes ist als unser Dezimalsystem, ergibt das bei 09+01=10. Jedes IC kann nicht mehr als 4-Bit verarbeiten, also Ziffern von 0-9 (eigentlich bis F). Somit folgt nach 9+1 für das 1.IC = 0 mit einem Übertrag(Output) und für das 2.IC 0+Übertrag(input)=1. Wir Menschen sehen eine 10. Das eine IC aber nur eine 0 das andere IC eine 1.
Das heißt für eine 1 0 0 0 0 0 0 0 0 0 siehst du eine Million. Die IC's sehen nur die Bitstellung die für sie selbst gelten, ihre Nachbarn kennen sie nicht.
Übrigens hat jedes IC 4Bit für die Codierung, 1Bit für Übertrag-Ausgang, 1Bit für Übertrag-Eingang, einen Eingang für Auswahl ob dezimal oder hexadezimal usw..

Betrachten wir also wieder meine Aufgabe:

0100 1010 -> Binär = 4A
4 steht für 2.IC und A für das 1.IC -> und somit habe ich für meine Erklärung schon mal einen Fehler gemacht. A darf gar nicht verwendet werden, weil es ist ja eigentlich schon 0 + Übertrag (10). Mein Fehler! Blöder Fehler! Zu sehr Binär gedacht.

Deswegen hier eine bessere Aufgabe (gültig für BCD (0-9))

0100 1001 -> Binär(BCD (0-9)) = 49
0000 0001 -> addiere(BCD (0-9)) 01
0101 0000 -> Ergebnis(BCD (0-9)) 50

Warum? - Deine BCD-IC's sind auf 0-9 begrenzt (geht tatsächlich mit den 4000er IC's), d.h. sie zählen nur von 0-9 und danach beginnt es wieder bei 0 und es gibt einen Übertrag für das nächst höhere IC. Vergiss bitte nicht: da steht nicht 50 sondern 5 für das 2.IC und 0 für das 1.IC.

Habe ich mich jetzt verständlicher ausgedrückt?

0
citkid  23.04.2020, 23:42
@citkid

Übrigens kann ich mir nicht vorstellen, dass heute noch irgend jemand den BCD-Code verwendet. Das macht nur Sinn wenn man die alten IC's verwendet. Heute verwendet doch jeder lieber einen Controller. Das ist eine Art Minni-Computer. Die Programmierung verwendet dann für alle Aufgaben Binär-Code.
Für ein Byte ist die Wertigkeit (8)(4)(2)(1)
Für ein Word ist die Wertigkeit (128)(64)(32)(16) (8)(4)(2)(1)
Für ein DoppelWort ..... usw.
Natürlich hat man sich auch etwas für (Minus) und für Fließkommazahlen einfallen lassen. Sprengt hier aber den Rahmen.
Will man eine Zahl für den Menschen darstellen, wird sie mal eben in Dezimal umgerechnet und zur Anzeige gebracht.

0

!!!Achtung Spoiler Alarm!!!

Ist nicht vereinfacht

Bild zum Beitrag

 - (Computer, Schule, Technik)

Pheonix1234 
Fragesteller
 22.04.2020, 00:47

Vielen Dank, aber müsste das letze AND-Gatter, nicht so wie folgt lauten:

(bit3 ^ nicht bit2 ^ nicht bit1 ^ nicht bit0)

Weil die einzige verschlüsselte Pseudotetraede, die in dem Bild nicht erfasst wird ist 1000 und nicht 0001. 0001 war es nur, weil ich das höchste Bit vorne stehen gelassen habe. Also bei der Addition von 1111 und 0010 kommt ja 10001 raus. Und da lasse ich jetzt einfach das höchste Bit weg. Also habe ich 0001, da muss ich ja jetzt noch das erste und letzt Bit vertauschen und so habe ich 1000 und nicht 0001 oder?

0