Anregungen und Vorschläge zu PROFAN
Hier können Vorschläge für künftige PROFAN-Versionen, Ausgestaltung der PROFAN-Seiten und -Foren, etc. gemacht werden.
  Suchen
 Zurück zur Übersicht
 AutorThema: Bitweises Nicht
Dominik Reichl
Datum:17.11.01 15:30 Antwortenals Email verschicken (Dominik.Reichl@swp-net.de) 


Hallo

gibt es in Profan eigentlich einen Operator für ein bitweises/binäres Nicht?????

Vielen Dank im Vorraus
Dominik



Sven Schmidts
Datum:19.11.01 08:23 Antwortenals Email verschicken (schmidts@flat2serv.de) 


Auszug aus der Hilfe, wenn nach "Bitweise" gesucht wird:

"
ACHTUNG: logisch bedeutet, daß das Ergebnis wahr (1) oder falsch (0) ist, bei binären Funktionen werden die Werte bitweise verknüpft:

2 OR 4 ergibt 1, weil mindestens einer der Werte <> 0 (= wahr) ist
@OR(2,4) ergibt 6: %0010 OR %0100 = %0110
"

Mfg.
Sven Schmidts


Dominik Reichl
Datum:19.11.01 20:13 Antwortenals Email verschicken (Dominik.Reichl@swp-net.de) 


?????????????????????????????????
?????????????????????????????????
?????????????????????????????????



Ich fragte nicht nach irgendetwas bitweisem sondern nach einem: Bitweises "Nicht!" ("Nicht" im Sinne von Operator!)

Aus 0xAAAA muss zum Beispiel 0x5555 werden.

In C++ heisst der Operator auch "Ones Complement Operator" oder "bitwise complement" und dort schreibt man das meistens so:
y = ~y;

In Profan gibts ja jede Menge bitweise arbeitende Operatoren wie Und, Oder, u.s.w. Aber ein "bitweises Nicht" gibt es nicht?

Mfg
Domink



Bernhard Künzel
Datum:19.11.01 22:16 Antwortenals Email verschicken (b.kuenzel@chello.at) 


Hallo Dominik,
Bitweise "NICHT!" ist auch in Profan möglich!!!!
versuche es mit
Print Hex$(XOR($AAAA,$FFFF))
beim zweiten Parameter müssen alle Bits gesetzt sein

MFG
Bernhard



Dominik Reichl
Datum:20.11.01 18:57 Antwortenals Email verschicken (Dominik.Reichl@swp-net.de) 


Hallo

Vielen Dank Bernhard, so gehts tatsächlich auch.
Aber einen "direkten" Operator gibt es nicht?

Danke
Dominik



Jörg Sellmeyer
Datum:20.11.01 20:26 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo,
Du könntest Dir mit Def 'ne eigene Funktion basteln:
Def BitNot(Hex$(XOR(&(1),&(2)))) 'Wenn ich's richtig verstanden habe

Gruß
Jörg


Bernhard Künzel
Datum:20.11.01 21:31 Antwortenals Email verschicken (b.kuenzel@chello.at) 


Hallo Dominik,
Es geht mit einer Funktion
Def OCO(1) XOR(&(1),Val(Add$("$",MkStr$("F",Len(Hex$(&(1)))))))
Beispiel:
Print OCO(11184810)
Print Hex$(OCO(11184810))
Print Hex$(OCO(Val("$AAAAAA")))

Die Anzahl der notwendigen gesetzten Bits wird für die Maske in der Funktion automatisch berechnet.
MFG
Bernhard


Bernhard Künzel
Datum: 27.11.01 15:20 Antwortenals Email verschicken (b.kuenzel@chello.at) 


Hallo Dominik,
hatte bei der Funktion leider einen großen Gedankenfehler, da ich die Maske mit Hex$ erzeugte funktioniert das nur bei einer geraden Anzahl Bits, die Maske muß mit Bit$ erzeugt werden, dann funktioniert sie bei jeder Anzal von übergebenen Bits.

Hier die neue gültige Funktion.
Def OCO(1) XOR(&(1),Val(Add$("%",MkStr$("1",Len(BIN$(&(1)))))))

Test:
Print OCO(19) 'Übergabe mit ungerader Anzahl an Bits (5) 19=10011 ->Ergebnis 12=1100
Print OCO(53) 'Übergabe mit gerader Anzahl an Bits (6) 53=110101 ->Ergebnis 10=1010

MFG
Bernhard



 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
Shortwin - denn Glück ist kein Zufall!