Microsoft Excel

Das Portal zum Thema Excel-Formeln

Gruppe: Zahlensysteme

Beitrag: UND bzw. ODER Verknüpfung zweier Binärzahlen *

Aufgabe
Zwei Binärzahlen sollen binär verknüpft werden.
Autor: Andreas ???

       A               B               C       
1 1010101010  682   
2 11001100  204   
3      
4 10001000  136  UND  
5 1011101110  750  ODER 

Lösung
Die beiden Binärzahlen stehen in A1 und A2.

in A4 steht das Ergebnis der UND-Verknüpfung:
{=SUMME(WENN(LINKS(RECHTS(TEXT(A1;WIEDERHOLEN("0";20));ZEILE(1:10));1)*LINKS(RECHTS(TEXT(A2;WIEDERHOLEN("0";20));ZEILE(1:10));1);1)*10^((ZEILE(1:10)-1)))}
Es geht aber auch viel einfacher ohne Array:
=1*WECHSELN(WECHSELN(A1+A2;1;0);2;1)

in A5 steht das Ergebnis der ODER-Verknüpfung:
{=SUMME(WENN(LINKS(RECHTS(TEXT(A1;WIEDERHOLEN("0";20));ZEILE(1:10));1)+LINKS(RECHTS(TEXT(A2;WIEDERHOLEN("0";20));ZEILE(1:10));1);1)*10^((ZEILE(1:10)-1)))}
ganz einfach:
=1*WECHSELN(A1+A2;2;1)

Die Ergebnisse kann man wie folgt überprüfen:
Schreibe in B1;B2;B4;B5 die entsprechenden Dezimalzahlen.

starte das VBA-Makro
Sub test()
MsgBox 682 And 204
MsgBox 682 Or 204
End Sub

und Du erhälst die Meldung 136 und 750#



Erläuterung
Ergänzung von Ernst-Albrecht Borgener:

Mit der Formel
=1*WECHSELN(A1+A2;2;0) 
kann man auch den logischen Vergleich XOR (entweder oder) durchführen.

Ergänzung vom 02.04.2006:
Dezimalzahlen binär vergleichen:

UND:
{=SUMME(WENN(MMULT(KÜRZEN(REST({682.204}/2^(30-ZEILE(1:30));2));{1;1})=2;1)*2^(30-ZEILE(1:30)))}=136

ODER:
{=SUMME(WENN(MMULT(KÜRZEN(REST({682.204}/2^(30-ZEILE(1:30));2));{1;1})>0;1)*2^(30-ZEILE(1:30)))}=750