wie kann man 2 binaerzahl (int[] a, int[]b) nach rechts verschieben ohne >> und << zu verwenden |
23.11.2015, 12:02 | Auf diesen Beitrag antworten » | |||||
Abed | wie kann man 2 binaerzahl (int[] a, int[]b) nach rechts verschieben ohne >> und << zu verwenden Meine Frage: wie kann man 2 binaerzahl (int[] a, int[]b), die z,b lange 8 haben, nach rechts verschieben ohne >> und << zu verwenden Meine Ideen: ich stelle am Anfang einen Array ich konvertiere (a) ins 2er komplement und addiere ich es mit a also b = add(b, seine 2er komplement) for ( int i = 0 ; i< 8 -1 ; i--){ |
|||||
|
||||||
23.11.2015, 13:48 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Die Aufgabe ist unklar: um wie viel willst du shiften, was steht in a und b? Und was hat das mit dem 2er Komplement zu tun? |
|||||
23.11.2015, 16:25 | Auf diesen Beitrag antworten » | |||||
Abed | um 2 schiften, int[] a = {1,0,0,0,0,1,1,0}; int[] b = {0,0,0,0,0,0,1,0}; ich dachte dass ich mit 2er komplemt was zu tun hab aber egal so |
|||||
23.11.2015, 16:28 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Willst du a und b beide um 2 shiften oder soll man die 2 irgendwie aus der Eingabe ablesen können? |
|||||
Anzeige | ||||||
|
||||||
23.11.2015, 16:33 | Auf diesen Beitrag antworten » | |||||
Abed | also ich hab schrftlich gemacht und hab so gekriegt {0,0,1,0,0,0,0,1} und hab ich mal probiert int[] shift = new int[input.length]; shift = a; int verschieben = 1; for (int i = b.length - 1; i >= 0; i--) { if (b[i] == 1) { for (int y = 0; y < shift.length - 1; y++) { if (y < verschieben) { shift[y] = 0; } else { shift[y] = shift[y-verschieben]; } } } verschieben = verschieben * 2; } return shift; |
|||||
23.11.2015, 16:52 | Auf diesen Beitrag antworten » | |||||
eulerscheZahl | Bitte verwende code Tags, das macht deinen Code leserlicher. shift = a; bewirkt, dass du im weiteren Verlauf a überschreibst. Die Variable verschieben solltest du nicht ändern, du willst ja immer um die selbe Anzahl Bits verschieben.
|
|