Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Sonstige Fragen » wie kann man 2 binaerzahl (int[] a, int[]b) nach rechts verschieben ohne >> und << zu verwenden » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen wie kann man 2 binaerzahl (int[] a, int[]b) nach rechts verschieben ohne >> und << zu verwenden
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Abed
Mitglied


Dabei seit: 31.10.2015
Beiträge: 27

wie kann man 2 binaerzahl (int[] a, int[]b) nach rechts verschieben ohne >> und << zu verwenden Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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 12:02 Abed ist offline E-Mail an Abed senden Beiträge von Abed suchen Nehmen Sie Abed in Ihre Freundesliste auf AIM-Name von Abed: primt YIM-Name von Abed: primt
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?

__________________
Syntax Highlighting fürs Board (Link)
23.11.2015 13:48 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Abed
Mitglied


Dabei seit: 31.10.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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:25 Abed ist offline E-Mail an Abed senden Beiträge von Abed suchen Nehmen Sie Abed in Ihre Freundesliste auf AIM-Name von Abed: primt YIM-Name von Abed: primt
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Willst du a und b beide um 2 shiften oder soll man die 2 irgendwie aus der Eingabe ablesen können?

__________________
Syntax Highlighting fürs Board (Link)
23.11.2015 16:28 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Abed
Mitglied


Dabei seit: 31.10.2015
Beiträge: 27

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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:33 Abed ist offline E-Mail an Abed senden Beiträge von Abed suchen Nehmen Sie Abed in Ihre Freundesliste auf AIM-Name von Abed: primt YIM-Name von Abed: primt
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
code:
1:
2:
3:
4:
5:
6:
7:
8:
static void shift(int[] array, int delta) { //um delta Stellen nach links shiften, in place
	for (int i = 0; i + delta < array.length; i++) {
		array[i] = array[i + delta];
	}
	for (int i = array.length - delta; i < array.length; i++) {
		array[i] = 0;
	}
}


__________________
Syntax Highlighting fürs Board (Link)
23.11.2015 16:52 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Sonstige Fragen » wie kann man 2 binaerzahl (int[] a, int[]b) nach rechts verschieben ohne >> und << zu verwenden