CRC Prüfung
-
ja also die schleife läuft in der Tat sehr lange, das merkt man auch, wenn man das Programm startet, aber dennoch springt er iwann raus und gibt warum auch immer das vermutlich richtige Ergebnis aus. Zumindest kommt 0 raus, wenn sie rauskommen soll...
-
und ich hab mich schon über das
\nBitte warten...");
gewundert
-
ja eben
das dauert halt nur etwas länger, aber endlos ist sie offenbar nichtIch werds morgen wahrscheinlich eh hochladen müssen, aber eigetlich hast du Zeit bis Donnerstag... Deswegen brauch ich auch die Erklärung am besten zu jeder Zeile, weil ich nicht alles so ganz verstehe..
-
xX Dany Xx schrieb:
aber eigetlich hast du Zeit bis Donnerstag
also so war das eigentlich nicht gedacht...
naja aber so sollts zumindest das machen was du willst...
int findFirstBitSet(int i){ int x = 32; while(x--){ if(i & 1<<x) return x; } return -1; } int main(void) { /*unsigned int a = 0x365; unsigned int b = 0x35;*/ unsigned int b = 0x265; unsigned int a = 0x35; /*unsigned int a = 0xB99; unsigned int b = 0x13;*/ unsigned int c; unsigned int firstBit = 0x80000000; int firstBitOfA = findFirstBitSet(a); int firstBitOfB = findFirstBitSet(b); int dataBits = firstBitOfA - firstBitOfB; int bShift = 31-firstBitOfB; if(dataBits<0){ printf("Error: Sendepolynom < Generatorpolynom;"); exit(1); } a<<=31-firstBitOfA; b<<=bShift; c=a^b; while(dataBits--){ if((c&firstBit) == 0) c<<=1; if(c&firstBit) c^=b; }; c>>=bShift; printf("result: 0x%x",c); return 0; }
lg lolo
-
achso das ist natürlich bischen unglücklich
while(dataBits--){ if((c&firstBit) == 0) c<<=1; if(c&firstBit) c^=b; };
besser wäre
while(dataBits--){ if((c&firstBit) == 0){ c<<=1; if(c&firstBit) c^=b; }else c^=b; };
glaub ich zumindest
-
ups
int findFirstBitSet(unsigned int i){ statt int findFirstBitSet(int i){
-
Ja das scheint jetzt zu funktionieren, aber jetzt geht die Eingabe wieder nicht mehr, also der erkennt richtig a = b99 und b = 13 aber als result gibt er mir dann b8a aus ...
char buffera[40], bufferb[40]; unsigned int a=0, b=0; unsigned int firstBit = 0x80000000; unsigned int c; int firstBitOfA = findFirstBitSet(a); int firstBitOfB = findFirstBitSet(b); int dataBits = firstBitOfA - firstBitOfB; int bShift = 31-firstBitOfB; printf ("\n\nBitte geben Sie das Sendepolynom ein: "); scanf("%32s", &buffera); getchar(); a=strtol (buffera, NULL, 2); printf ("a = %x", a); printf ("\nBitte geben Sie das Generatorpolynom ein: "); scanf("%32s", &bufferb); getchar(); b=strtol (bufferb, NULL, 2); printf ("b = %x", b);
-
versuch mal z.7 - z.10 inclusive unter z.22
-
Ja.. es funktioniert.. unglaublich..
Danke
-
@noobLolo
Hast du vielleicht ICQ?
Es wäre cool, wenn du mich mal adden würdest. Ich will dich nur noch bissi ausfragen und dann lass ich dich endlich in Ruhe
Meine ICQ-Nr.: xxxxxxxxxEdit:
Ah nee ich hab jetzt alles kapiertIch bin jetzt fertig..
Danke