Hi, ich bräuchte ein rückgekoppeltes Schieberegister in java (auch andere sprachen möglich) weiss jemand woher ich den quelltext bekommen könnte ? kann das jemand programmieren ? http://de.wikipedia.org/wiki/Linear_r%C3%BCckgekoppeltes_Schieberegister besten dank Karsten
>weiss jemand woher ich den quelltext bekommen könnte ? nö >kann das jemand programmieren ? Ja, ist ja auch nicht so schwer. .......... Hast du eine konkrete Frage zu deiner Hausaufgabe? Dann stelle diese. Oder willst du nur eine fertige Lösung haben?
Hi, ja wäre cool, wenn ich den quelltext bekommen könnte. ich bekomms halt nicht hin. wäre nett, wenn du mir helfen würdest mfg Karsten
Hier mal das Wiki-Beispiel in C++ (sollte sich mit ein paar Änderungen in Java übertragen lassen). Den Code habe ich jetzt einfach 'trocken' hingeschrieben, d.h. nicht getestet, aber er sollte eigentlich funktionieren.
1 | int shift( int &value ) |
2 | {
|
3 | int feedback; |
4 | int ret; |
5 | |
6 | feedback = ( value >> 15 ) ^ ( value >> 13 ); |
7 | feedback ^= ( value >> 12 ); |
8 | feedback ^= ( value >> 10 ); |
9 | feedback &= 1; |
10 | |
11 | ret = ( value >> 15 ); |
12 | value = ( value << 1 ) | feedback; |
13 | |
14 | return ret; |
15 | }
|
schon mal besten dank. kannste mir das auch noch erklären. bin nicht C++ - konform. wenn ihr noch mehrere lösungsansätze habt, immer her damit. mfg Karsten
Erklären kann ich das: Im Wiki-Beispiel werden die Bits 15 und 13 mit XOR behandelt (roter Kreis mit einer Art Pluszeichen), dazu dann noch Bit 12 (zweiter Kreis von rechts) und anschließend noch Bit 10. Das passiert mit der Zuweisung von feedback in meinem Beispiel. Dann passiert noch ein AND mit 1, damit das Ergebnis auf ein Bit begrenzt wird (die Shift-Operationen >> liefern als Ergebnis jeweils mehrere Bits, es ist aber nur das unterste Bit von Interesse). Der Rückgabewert der Funktion ist das höchste Bit (in dem Fall ret --- Ich sehe gerade, dass dort auch noch ein & 1 fehlt). Danach wird value, das als Referenz übergeben wird (geht so in Java nicht), um ein Bit nach links geschoben und feedback als unterstes Bit gesetzt. Das ist das eigentliche Schieberegister. Ich versuche jetzt mal, ob ich das auch in Java basteln kann.
Hi, florian du wärst mir ne riesen hilfe. ich probier mir hier die finger wund... wär super, wenn du was für mich hättest. danke Karsten
OK, hier mal in Java. BTW: Ich mag Java überhaupt nicht, daher kann es sein, dass dies hier javatechnisch nicht sehr gelungen ist.
1 | public class shift |
2 | {
|
3 | private static int shift_state=1; |
4 | |
5 | private static int feedback() |
6 | {
|
7 | // calculate feedback value
|
8 | // some of the parentheses are not necessary and are only for clarity
|
9 | return 1 & |
10 | (
|
11 | (
|
12 | (
|
13 | ( shift_state >> 15 ) ^ ( shift_state >> 13 ) |
14 | ) ^ ( shift_state >> 12 ) |
15 | ) ^ ( shift_state >> 10 ) |
16 | );
|
17 | }
|
18 | |
19 | private static String to_bin( int value ) |
20 | {
|
21 | // format output as binary
|
22 | String s = ""; |
23 | int i = 0; |
24 | |
25 | for ( i = 15; i >= 0; i-- ) { |
26 | s += ( ( value & ( 1 << i ) ) != 0 ) ? "1" : "0"; |
27 | }
|
28 | |
29 | return s; |
30 | }
|
31 | |
32 | private static int shift_reg() |
33 | {
|
34 | int result; |
35 | // shift register, apply feedback and return highest bit
|
36 | |
37 | result = ( shift_state >> 15 ) & 1; |
38 | shift_state = ( ( shift_state << 1 ) | feedback() ) & 0xFFFF; |
39 | System.out.print( to_bin( shift_state ) ); |
40 | return result; |
41 | }
|
42 | |
43 | public static void main ( String argv[] ) |
44 | {
|
45 | int i, j; |
46 | |
47 | System.out.println( to_bin( shift_state ) ); |
48 | |
49 | for ( i = 0; i < 64 ; i++ ) { |
50 | j = shift_reg(); |
51 | System.out.print( " --- " ); |
52 | System.out.println( j ); |
53 | }
|
54 | }
|
55 | }
|
Hi, florian besten dank respekt. kannste mir auch nochmal bitte ein paar erklärungen dazu aufschreiben. nur zum besseren verständnis. danke gruß Karsten
Wo müsste ich denn anfangen, d.h. was sind Deine Vorkenntnisse? Wenn ich bei Adam und Eva anfangen müsste, würde sich vermutlich ein Buch besser eignen.
Welchen Teil deiner Hausaufgabe willst du eigentlich selbst machen?
Hi, florian so, wie du's bei der c-programmierung auch gemacht hast. nur ne kurze erklärung. von oben nach unten :-) gruß Karsten
in main bitte noch folgende Zeile einfügen: System.out.println("Diese Hausaufgabe wurde von Florian (www.mikrocontroller.net) abgearbeitet."); Nur dann arbeitet das Programm auch richtig ;-) Und dann wundern sich die Azubis, dass es nur Absagen hagelt... Gruß
Also mal langsam. Ich muss den anderen Recht geben. In meiner Welt wird weder Faulheit noch Dummheit belohnt. Aus privatem Interesse scheinst Du Dich ja nicht damit auseinanderzusetzen. Wenn es hier um eine Aufgabe im Studium / Schule (wohl eher nicht) / Ausbildung geht, ist es vermutlich effektiver, wenn Du Dir das Wissen selbst aneignest. Wenn Du noch nicht einmal in der Lage bist, den Kommentar analog auf diesen Java-Krempel zu übertragen, obwohl die Syntax nahezu identisch ist, was Operatoren angeht, dann hast Du vermutlich den falschen Studiengang / Ausbildung erwischt. Was man nicht alles macht, nur um ein Papier in der Tasche zu haben. Wenn ich teilweise die Fragen hier im Forum sehe, kann ich manchmal nur die Hände über dem Kopf zusammenschlagen, da die (angehenden) Herren Ingenieure zum Teil noch nicht einmal ihre eigene Sprache beherrschen. Also, selbst nachdenken.
@Florian machs doch nicht so kompliziert. Gib ihr einfach deine Telefonnummer, dann kann dich ihr Auftraggeber/Professor/Lehrer direkt anrufen wenn es noch Fragen zum Code gibt. Was erwartet ihr eigentlich, wenn eine nichtfunktionierende Schaltung mit einer 2 bewertet wird, nur weil das Gehäuse schön geworden ist?
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.