binärezahlen addieren

Neue Frage »

Auf diesen Beitrag antworten »
Abed binärezahlen addieren

Meine Frage:
ich nehme mal an, dass ich a und b 2 binärzahlen sind,
int [] a = {0,1,0,0,0,0,1};
int[] b = {0,1,1,1,0,1,1};
ich kann sie theoritsche rechnen.
jz meine Frage ist, wie ich die Operation der Addition in eclips (java) einsetzen kann?

Meine Ideen:
mit for und if schleife
Aber wie? ka
 
Auf diesen Beitrag antworten »
eulerscheZahl

Starte beim niederwertigsten Bit und arbeite dich nach vorn. Den Übertrag musst du auch behandeln, also hast du 3 Eingangsvariablen (a, b, carry_in - also der alte Übertrag) und 2 Ausgangsvariablen (a+b, carry_out - Ausgangsübertrag).
Eine Tabelle, wie du Ausgänge gebildet werden, kannst du dir entweder selbst überlegen oder vom Volladdierer übernehmen.
Auf diesen Beitrag antworten »
Abed

ich habe nicht so gut verstanden ,
können Sie noch mehr erklären

Grüße
Abed
Auf diesen Beitrag antworten »
eulerscheZahl

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
public static void main(String[] args) {
	int[] a = { 0, 1, 0, 0, 0, 0, 1 };
	int[] b = { 0, 1, 1, 1, 0, 1, 1 };
	int[] c = new int[a.length];
	int carry_in = 0;
	for (int i = a.length - 1; i >= 0; i--) {
		int carry_out = 0;
		if (a[i] == 0 && b[i] == 0 && carry_in == 0) { c[i] = 0; carry_out = 0; }
		if (a[i] == 0 && b[i] == 0 && carry_in == 1) { c[i] = 1; carry_out = 0; }
		if (a[i] == 0 && b[i] == 1 && carry_in == 0) { c[i] = 1; carry_out = 0; }
		if (a[i] == 0 && b[i] == 1 && carry_in == 1) { c[i] = 0; carry_out = 1; }
		if (a[i] == 1 && b[i] == 0 && carry_in == 0) { c[i] = 1; carry_out = 0; }
		if (a[i] == 1 && b[i] == 0 && carry_in == 1) { c[i] = 0; carry_out = 1; }
		if (a[i] == 1 && b[i] == 1 && carry_in == 0) { c[i] = 0; carry_out = 1; }
		if (a[i] == 1 && b[i] == 1 && carry_in == 1) { c[i] = 1; carry_out = 1; }
		carry_in = carry_out;
	}
	System.out.println(Arrays.toString(c));
}
 
Auf diesen Beitrag antworten »
Abed ich hab was enders gemacht und hat nicht geklappt

int[] c = new int[a.length];
int ue = 0; // uebertrag
for (int i = a.length - 1; i >= 0; i--) {

if (a[i] + b[i] + ue == 0) {
c[i] = 0;
} else if (a[i] + b[i] == 1) {
c[i] = 0;
if (ue == 1) {

c[i] = 0;
}
} else if (a[i] == 1 && b[i] == 1) {
c[i] = 0;
ue = 1;
if (ue == 1) {
c[i] = 1;
}
vielen vielen Dank
Auf diesen Beitrag antworten »
eulerscheZahl

Weil du eine UND Verknüpfung der beiden Zahlen gebaut hast. Damit c[i] = 1; ausgeführt wird, muss a[i] == 1 && b[i] == 1 gelten.
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »