Gast
#2182187
Hallo ich habe folgendes Problem ich soll einen 16 bit Wert in einer 2 mal 4 matrix ablegen. Jeweils 2 bit sollen eine Stelle in der Matrix entsprechen. Kann mir irgend jemand sagen wie das geht?
|
Anzeige
|
Wert in Matrix ablegen
Gast
#2182187
Hallo ich habe folgendes Problem ich soll einen 16 bit Wert in einer 2 mal 4 matrix ablegen. Jeweils 2 bit sollen eine Stelle in der Matrix entsprechen. Kann mir irgend jemand sagen wie das geht?
Gast
#2182191
kannst du dein bisheriges Programm schon mal zeigen? Denn deine Anfrage ist nicht eindeutig.
Gast
#2182632
Hallo ich hab mir das so voegestellt:
struct a{int zahl:2,};
struct b{a senkrecht[2]};
struct c{b waagrecht[4]};
Nur wie bekomme ich meinen 16 bit Wert am besten hier rein?
Möchte es ohne Maskieren machen wenn das geht? hat einer eine Idee
hierzu?
C_Anfänger schrieb: > struct a{int zahl:2,}; > struct b{a senkrecht[2]}; > struct c{b waagrecht[4]}; Das funktioniert so aber nicht, weil ein struct immer "aufgerundet" wird. Wie genau haengt von der verwendeten Prozesso-Architektur ab. So wird oft auf ganze 32 bit Worte aufgerundet. Testweise koennte man sich zum Beispiel mal sizeof(a), sizeof(b) und sizeof(c) ausgeben lassen. Normalerweise implementiert man so etwas mit Zugriffsfunktionen, die das entsprechende maskieren uebernehmen.
Gast
#2182720
hallo und wie würde das ganze dann aussehen?
Gast
#2182722
Erklär doch mal was genauer du vorhast, ich verstehe die Frage nicht (und kann deshalb auch nicht helfen). Beispiel? C_Anfänger schrieb: > hallo und wie würde das ganze dann aussehen? Mal sehen:
Irgendwie so müsste es gehen, wenn ich richtig verstanden habe was Du machen möchtest.
Gast
#2182753
ALso die Aufgabenstellung ist so mein 16 bit Wert soll angeben welche Elemente in einer Matrix mit 0 , 1 oder -1 gefüllt sind. 00 = 0 01 = 1 10 = -1 11 ungültig matrix c[2][4] So wenn jetzt mein unit16 Wert so aussehen würde 1001000010100001 Müste ich die Daten wie folgt in der Matrix ablegen. c[0][0] =10 c[0][1] =01 c[0][2] =00 c[0][3] =00 c[1][0] =10 c[1][1] =10 c[1][2] =00 c[1][3] =01 hierraus würde ich dann bestimmen ob es 0 ,1 oder -1 ist.
Gast
#2182758
C_Anfänger schrieb: > ALso die Aufgabenstellung Hausaufgaben? Hier gibts Hilfe aber keinen fertigen Code (wollte ich nur mal erwähnt haben.) ist so mein 16 bit Wert soll angeben welche > Elemente in einer Matrix mit 0 , 1 oder -1 gefüllt sind. > 00 = 0 > 01 = 1 > 10 = -1 > 11 ungültig > matrix c[2][4] > So wenn jetzt mein unit16 Wert so aussehen würde 1001000010100001 > Müste ich die Daten wie folgt in der Matrix ablegen. > c[0][0] =10 > c[0][1] =01 > c[0][2] =00 > c[0][3] =00 > c[1][0] =10 > c[1][1] =10 > c[1][2] =00 > c[1][3] =01 > hierraus würde ich dann bestimmen ob es 0 ,1 oder -1 ist. Denk dir doch erstmal eine eindimensionale Matrix und packe die Elemente gedanklich hintereinander:
Vergleiche mit deinem uint16_t-Wert: 00011001. Fällt dir was auf? Einfache Bitschieberei. 2-dimensional wird es etwas komplizierter aber das Prinzip bleibt gleich. Mache es wie Kai S., eine Funktion GetElement und eine Funktion SetElement. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|