Seite 1 von 1

[gelöst] binär rechnen (AND / OR / XOR)

Verfasst: Di, 08.03.2011 20:02
von Blaukraut
Hallo,
irgendwie finde ich keine Funktionen, um einfache binäre Rechnungen durchzuführen.
Damit meine ich nicht einfache logische Wahr-Falsch Abfragen und deren Verknüpfungen sondern die elementaren Rechnungen wie z.B.:
2 OR 4 = 10
oder
7 AND 2 = 2

Hintergrund: ich möchte größere Zahlen im Binärformat darstellen.
Die Funktion DEZINBIN kann nur max. 10 Bit verarbeiten, also max. die Dezimalzahl 1023.
Ich möchte daher die Zahl jeweils in 8-Bit-Teile durch maskieren aufsplitten und dann mit diesen 8-Bit-Blöcken weiterrechnen.

Kennt jemand die Operatoren für binäre Rechenoperationen?
Oder kennt jemand eine "Long"-Variante der Funktion DEZINBIN, welche mit mindestens 24-Bit umgehen kann?

Danke vorab!

WinXP; Oo3.1.1

Re: binär rechnen (AND / OR / XOR)

Verfasst: Mi, 09.03.2011 01:31
von Constructus
Hallo Blaukraut,

irgendwas stimmt in Deiner Rechnerei nicht...

Eine kurze Suche ergab:

binäre Rechenoperationen
http://magicstone.de/rhwiki/article/Bin%E4re_Operatoren
http://www.wer-weiss-was.de/theme50/article149831.html
http://de.wikipedia.org/wiki/Zweierkomplement
http://www.sccweb.de/themen/binary/

Siehst Du die Möglichkeit, daraus einen Weg zu ermitteln, wie Du weiterkommst? Ich meine, ich hätte das vor ...zig Jahren mal manuell gekonnt, das finde ich heute aber nicht wieder.

Nette Grüße

Constructus

Re: binär rechnen (AND / OR / XOR)

Verfasst: Mi, 09.03.2011 08:09
von Blaukraut
Hallo,

danke für die Antwort.
Ich hatte vergessen dazuzuschreiben, dass ich Probleme habe, diese Operationen in CALC durchzuführen.
Rein mathematisch ist mir das sehr geläufig und in C oder Delphi kann man auch problemlos damit arbeiten, nur in CALC finde ich keine Operatoren, die das können.
Ich hatte laienhaft gedacht, dass CALC als kleines MatheGenie soetwas standartmäßig als Funktionen dabei hat und man keine Macros o.ä. dafür braucht.
Vielleicht ist es auch so, nur finde ich hier nichts...

Re: binär rechnen (AND / OR / XOR)

Verfasst: Mi, 09.03.2011 09:02
von Karolus
Hallo
Wenn dir das mathematisch so geläufig ist, frage ich mich wieso du in dem Zusammenhang über AND , OR und XOR faselst.
Die in Calc vorhandene DEZINBIN-funktion ist nunmal auf 9(10) Ausgabestellen beschränkt.
Ansonsten - (falls du nicht mit Basic, Python, Javascript oder Beanshell arbeiten willst) - In Calc kannst du mit GANZZAHL() und REST() und mit dem &-textverknüpfungoperator deine Umrechnungsmatrix zusammenbauen.

Gruß Karo

[gelöst] Re: binär rechnen (AND / OR / XOR)

Verfasst: Mi, 09.03.2011 12:27
von Blaukraut
>>Wenn dir das mathematisch so geläufig ist, frage ich mich wieso du in dem Zusammenhang über AND , OR und XOR faselst.
sorry, wenn ich hier anscheinend total verpeilt Fragen stelle und wirres Zeug fasle. Das ist nicht meine Absicht.
Asche über mein Haupt, Asche über mein Haupt, Asche über mein Haupt (ich hoffe das reicht jetzt)
Die in Calc vorhandene DEZINBIN-funktion ist nunmal auf 9(10) Ausgabestellen beschränkt.
Das habe ich doch erkannt und eigentlich auch so geschrieben?
In Calc kannst du mit GANZZAHL() und REST() und mit dem &-textverknüpfungoperator deine Umrechnungsmatrix zusammenbauen.
Ja, danke, das ist natürlich möglich. Anscheinend gibt es keinen eleganteren Weg.
Und mit dieser Erkenntnis bin ich zufrieden!

Re: binär rechnen (AND / OR / XOR)

Verfasst: Mi, 09.03.2011 12:54
von Karolus
Hallo
Doch, es gibt elegantere Wege - aber du schriebst:
....und man keine Macros o.ä. dafür braucht.
Damit schließt du die eleganteren Wege aus - z.B. mit python eine Zweizeiler:

Code: Alles auswählen

def dez2bin( i ):
    return format( int( i ) , "b" )
Leider brauchts etwas mehr, um aus Calc heraus diese Funktion zu nutzen siehe: viewtopic.php?f=2&t=43087&p=158588#p158588

Gruß Karo

Re: binär rechnen (AND / OR / XOR)

Verfasst: Mi, 09.03.2011 18:53
von Karolus
Hallo
Es gibt tatsächlich noch eine Calc-funktion zur binären Darstellung von ganzen Zahlen ohne die Beschränkung von DEZINBIN !

Code: Alles auswählen

=BASIS( zahl ; 2 )
Gruß Karo

Re: binär rechnen (AND / OR / XOR)

Verfasst: Mi, 09.03.2011 19:05
von Blaukraut
Verblüffend, das funktioniert perfekt.
Vielen Dank, damit muss ich nun endlich nicht mehr weiter faseln.

Gruß vom Blaukraut!

Re: [gelöst] binär rechnen (AND / OR / XOR)

Verfasst: Do, 10.03.2011 01:40
von Constructus
Hallo Karo,

mal wieder was neues gelernt... Ich hab das grad in einer Datei ausprobiert, die mit Dezinbin nach 2 Stufen abbrach; jetzt geht mehr (ein Ende kann ich nicht ermitteln).

Kennst Du auch noch eine solche Möglichkeit für römische Zahlen? Da kommt irgendwann auch error502 mit Römisch(...;2) ..

Nette Grüße

Constructus

P.s.: ist das Leerzeichen nach der ersten Klammer Zufall oder Absicht?

Re: nun Dezimalzahlen → römische Zahlen

Verfasst: Do, 10.03.2011 13:47
von Karolus
Hallo Construktus
Nein für die römische Zahlendarstellung gibts nichts eingebautes für größere Zahlen, anscheinend gibts auch verschiedene Möglichkeiten der Darstellung für Zahlen > 3000. Siehe http://de.wikipedia.org/wiki/R%C3%B6mis ... 9Fe_Zahlen (Das betrifft sowohl die verwendeten Zeichen als auch die Darstellungsregeln )
Eine Lösung in Python ohne Anspruch auf Vollständigkeit:

Code: Alles auswählen

numsigns = [(u'\u2188', 100000),
        (u'\u2182\u2188', 90000),
        (u'\u2187',50000),
        (u'\u2182\u2187', 40000),
        (u'\u2182', 10000),
        (u'M\u2182', 9000),
        (u'\u2181', 5000),
        (u'M\u2181', 4000),
        ("M", 1000),
        ("CM", 900),
        ("D", 500),
        ("CD", 400),
        ("C", 100),
        ("XC", 90),
        ("L", 50),
        ("XL", 40),
        ("X", 10),
        ("IX", 9),
        ("V", 5),
        ("IV", 4),
        ("I", 1)]


def dez2rom(n):
    result = []
    for sign, val in numsigns:
        while n >= val:
            n -= val
            result.append(sign)
    return "".join(result)
Zur Anbindung an Calc siehe 2 Antworten weiter oben.

Gruß Karo

Re: [gelöst] binär rechnen (AND / OR / XOR)

Verfasst: Do, 10.03.2011 19:00
von Constructus
Hallo Karo,

danke. Die Nachfrage war rein interesehalber, weil ich meiner Datei mit den Binärzahlen auch gleich eine Spalte mit den römischen Zahlen habe. Irgendwann ist die Darstellung der römischen Zahlen sowieso kaum mehr nachvollziehbar und auch unbekannt, wie das Nachlesen Deines Links zeigt. Wie weit die Römer selbst gezählt haben, habe ich nicht nachgesucht. Aber Million oder Milliarde dürften die kaum gekannt haben.

Bei mir geht es um so etwas:
Tage______9.131____10001110101011____Err:502
Wochen___1.304____10100011000_______MCCCIV
Monate____300_____100101100 _________CCC

Ich hoffe, das kommt einigermaßen verständlich 'rüber. Die unteren beiden Binärzahlen sind mit DezinBin erzeugt, die obere mit Deiner Formel.

Spielerei halt, aber es muß ja nicht alles bierernst sein...

Nette Grüße

Constructus