hilfe-lfsr-c
-
Hallo an alle!
Also ich habe jetz vor kurzer zeit erst angefangen c zu programmieren und habe jetz ein bisschen herumprobiert! so jetz habe ich ein lfsr in c geschrieben:int num_aus = 0x0912345; int num1 = 1; int num2 = 0; int num3 = 0; int xor = 0; int count = 0; int bitmask = 0x7FFFFFFF; int sum = 0; //wollte alle outpubits in einem string ausgeben! int main() { printf("Meine Zahl lautet: %x \n", num_aus); while (count < 8) { num_aus >>= 0; //num_aus = num_aus >> 0; num2 = num_aus & num1; printf("Outputbit: %x \n", num2); sum |= num2; sum = sum << 1; //printf("alle bits: %x\n", sum); num3 = num_aus >> 1; num3 &= num1; xor = num2 ^ num3; //-------------------------------------------------------------------- num2 = num_aus >> 2; num2 &= num1; xor ^= num2; //-------------------------------------------------------------------- num2 = num_aus >> 9; num2 &= num1; xor ^= num2; //-------------------------------------------------------------------- num2 = num_aus >> 15; num2 &= num1; xor ^= num2; //-------------------------------------------------------------------- num2 = num_aus >> 25; num2 &= num1; xor ^= num2; //printf("xor_fertig: %x \n", xor); //-------------------------------------------------------------------- xor <<= 31; num_aus >>= 1; num_aus &= bitmask; num_aus |= xor; //printf("fertiger code: %x \n", num_aus); //-------------------------------------------------------------------- count ++; } printf("alle bits: %x\n", sum); return 0;
So mein Programm läuft jetz 8 mal durch und berechnet mir von einem Hex wert den ich eingebe das lfsr!
mein polynom: x^32 + x^31 + x^30 + x^23 + x^17 + x^7 +1
wenn ich mein programm ausführe erhalte ich dann diesen output:
Meine Zahl lautet: 912345
outputbit:0
outputbit:1
outputbit:1
outputbit:0
outputbit:0
outputbit:0
outputbit:0
outputbit:0So soweit passt alles! Wie bekomme ich diese output jetz so zur Ausgabe:
Output: 00000110 !!!Vl kann mir da jemand behilflich sein!
Und der Code ist vl ein bisschen verwirrend, da ich dauernd herumprobiere und immer gleich etwas aus kommentiere usw.Danke im voraus!
mfg rene
-
rene_ob schrieb:
So soweit passt alles! Wie bekomme ich diese output jetz so zur Ausgabe:
Output: 00000110 !!!Schreib in Zeile 19:
printf("%x", num2);
-
Hi,
willst du Ergebnis adreasrum ausgeben, machst du Puffer, guckst du:char buf[9] = {0}; // Puffer memset ( buf, '0', sizeof(buf)-1 ); if ( (1 || 2) << 3 ) buf[7] = '1'; if ( (4 || 5) << 6 ) buf[6] = '1'; // ... usw. puts(buf);
Oder was rekursives bauen.
Gruß,
B.B.
-
bit-shiftung mit und-abfrage:
unsigned byte = 5; // 0000 0101 for(unsigned i=7; i>=0; i++) printf("%d", (byte<<i&1?1:0));
-
ok danke einmal für die schnellen antworten!
C/C++ Code:
printf("%x", num2);Hab ich ja e!
Ich habs jetz anders gelöst!
habe jetz bei jedem schleifendurchlauf mein outputbit in sum getan (mit einer Or verknüpfung und dann jedesmal 1 nach li geshiftet!
Jetz hats funktioniert!
Denn dann zum Schluss gibt er mir den HEX-Wert 60 aus!
Das in binär umgerechnet ergibt dann genau meinen gewünschten output!mfg rene