Hi, ích will eine 16Bit-Eingabe per Taster realisieren und die eingegeben 16 Bit werden binär im Display angezeigt. Dachte dabei an 2/3 Taster. Einen für die Bitposition (bei Tastendruck weiterspringen) und einen zum wählen des Bits (1 oder 0) 3 Taster wäre für die Darstellung der der 16 Bit in Hex (hätte dann hier einen Taster zum Erhöhen und einen zum Erniedrigen der gerade angewählten Hexzahl. Mein Problem ist aber, dass ich don't care Fälle berücksichtigen müsste. Dies wäre dann bei der 16 Bit Variante in Binärdarstellung zu realisieren. also z.B. 0010 10XX 00... mit X als don't care Fall, also egal ob 0 oder 1) Den Eingegebenen 16 Bit Wert benötige ich dann zum Vergleich mit einem gegebenem Wert und bei Übereinstimmung muss das Programm dann reagieren. Wer hat Hilfe oder Tips zur Realierung. V.a. zu den don't care Fällen??? Vielen Dank im Voraus. MfG
Hä? Auswertung oder Darstellung oder Eingabe, wo ist das Problem? Auswertung, beide Werte mit nem OR an der X-Stelle 1 machen. Darstellung, ein X hinsetzen. Eingabe, 0-1-X-0-1-X mit dem Taster durchlaufen lassen. Was willst du genau?
Ich seh v.a. kleine Probleme bei der Programmierung und hier besonders bei der Benutzung des Variablentyps. Bei 16 bit könnte ich ja int-Variable benutzen. Mit den dont'care Fällen geht dies ja dann nícht mehr. und als Ausgabe habe ich ja Strings.
Für Don't-Care brauchst Du zwei 16-Bit-Variablen. Eine mit Maske (gesetzes Bit = X) und eine mit dem eigentlichen Wert, der bei nichtgesetztem Bit der Maske durch diese "hindurchscheint".
Hi Rufus, also extra Maske für die Don't care Fälle. (mit z.B.: 0 = kein don't care und 1 = don't care Fall und diese Maske dann mit den anderen 16 Bit verodern) Bei don't care Fall ändere ich dann Bitposition in Dontcare-Maske und bei festem 0 oder 1 setze ich dann entsprechenden Wert in meine 2te 16 Bit Variable? Wie realire ich dann aus meinen 2 Variablen die Displayausgabe? Benötige dazu ja Strings (Programmierung in C!)
Dürfte grob so gehen:
1 | unsigned int wert; |
2 | unsigned int maske; |
3 | int i; |
4 | |
5 | wert = 0xA55A; // 1010010110100101 |
6 | maske = 0x1234; // 0001001000110100 |
7 | // 101X01X110XX0X01
|
8 | |
9 | // sizeof (int) == 2 wird im folgenden
|
10 | // implizit angenommen
|
11 | for (i = 15; i > -1; i--) |
12 | {
|
13 | if (maske & (1 << i)) |
14 | putchar('X'); |
15 | else
|
16 | putchar(wert & (1 << i) ? '1' : '0'); |
17 | }
|
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.