Aktuelle Zeit: 21.05.2013 08:11

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 18:17 
Offline
Benutzeravatar

Registriert: 12.06.2005 11:15
Wohnort: Germany
TomS hat geschrieben:
Außerdem: Was heißt alle Bits werden umgekehrt? Dann ist das Ergebnis doch das Maximale für den jeweiligen Typ.

Für einen Typ, der aus 2 Bits besteht: XX
0=00
1=01
2=10
3=11 (Alle Bits wurden von 0 auf 1 gekippt -> Ergebnis ist 3)

Es gibt in PureBasic keinen Typ der aus 2 Bits besteht. Minimum sind 8 Bit also 1 Byte. Wobei der Standarttyp Integer ist: 32bit bei x86 und 64bit bei x64. -1 weil es keinen vorzeichenlosen Integertyp in PB gibt.

STARGÅTE hat geschrieben:
Du meinst das Binäre NOT : nämlich die ~
Dort ist ~0 = -1

Aber das Schlüsselwort NOT ist kein binärOperator

Ja richtig, sorry, mein Fehler.

_________________
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 18:21 
Offline
Benutzeravatar

Registriert: 04.08.2009 17:24
es geht mir ja da mehr ums prinzip. dass in basic das zeichen "=" einerseits als zuweisungsoperator und andererseits als vergleichsoperator verwendet wird, ist mal ein grundsätzliches problem bei basic.

STARGÅTE hat geschrieben:
kann ich die Aussage A = B auch als Variable speichern

sorry, deiner aussage kann ich jetzt leider nicht folgen. woraus soll sich da ein resultat ergeben, dass ich in einer variablen speichern kann?

im gegensatz dazu ergibt NOT aber sehr wohl ein resultat, dass ich folglich dann ja auch in einer variablen speichern kann.

durch das if ist ja festegelegt, dass es sich um einen vergleichs und nicht um einen zuweisungsoperator handelt. also ich kann ja total daneben liegen, aber nach meiner vorstellung wird ein if befehl wie folgt aufgelöst

IF 2 = 3 AND 3 = 3
IF false AND true
IF false

bei mir setzt es da halt aus, warum ich ein ergebnis:
- dass ich berechnen kann
- dass ich mit debug anzeigen kann
- dass ich mit dem MessageRequester ausgeben kann
nicht in einer variable speichern kann.

Code:
Debug #True Or #False
b = #True Or #False
Debug b
MessageRequester("", Str(#True Or #False))


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 18:33 
Offline
Benutzeravatar

Registriert: 12.06.2005 11:15
Wohnort: Germany
Gerade im englischen Forum gelesen das soetwas in Planung ist: http://www.purebasic.fr/english/viewtop ... 8&start=19

_________________
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 18:39 
Offline
Benutzeravatar

Registriert: 23.12.2005 12:41
Wohnort: München
Thorium hat geschrieben:
Es gibt in PureBasic keinen Typ der aus 2 Bits besteht. Minimum sind 8 Bit also 1 Byte.


Schon klar. Aber auch bei 8 bit wird aus 0 11111111 wenn man alle Bits umdreht. Mir ging's um's Prinzip.

Thorium hat geschrieben:
-1 weil es keinen vorzeichenlosen Integertyp in PB gibt.


Das heißt es werden eigentlich nur 31/63 für die Zahl verwendet und ein Bit für's Vorzeichen? Müsste dann bei 32 bit Integer nicht 2^31*(-1) = -2147483648 rauskommen anstatt -1?

_________________
BildKarte der Pureboard-Mitglieder


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 18:49 
Offline
Benutzeravatar

Registriert: 12.06.2005 11:15
Wohnort: Germany
TomS hat geschrieben:
Schon klar. Aber auch bei 8 bit wird aus 0 11111111 wenn man alle Bits umdreht. Mir ging's um's Prinzip.

Das kommt auf den Typ drauf an by .b hast du hier auch -1 beim neuen (PB 4.40) Typ .a hast du hier 255.

TomS hat geschrieben:
Das heißt es werden eigentlich nur 31/63 für die Zahl verwendet und ein Bit für's Vorzeichen?

Genau.

TomS hat geschrieben:
Müsste dann bei 32 bit Integer nicht 2^31*(-1) = -2147483648 rauskommen anstatt -1?

Nein. Das letzte Bit gibt das Vorzeichen an, ist es gesetzt wird quasie rückwärts gezählt.

Also:
1 1 1 1 1 1 1 1 = -1
0 1 1 1 1 1 1 1 = 127

_________________
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 18:55 
Offline
Benutzeravatar

Registriert: 23.12.2005 12:41
Wohnort: München
Aha. Das heißt im Umkehrschluss 0 1 1 1 1 1 1 1 = - 127?

_________________
BildKarte der Pureboard-Mitglieder


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 19:28 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
Angenommen du willst 127 zu -127 machen, dann invertierst du die Bits von 127 und addierst 1 dazu:

Code:
127
0111 1111
1000 0000 + 1
1000 0001


-127 ist demnach 1000 0001 im Zweierkomplement.
Und -1 ist 1111 1111 ;-)

Natürlich geht das auch andersrum.

Code:
test.b = %11111111
Debug test


Probier einfach mal selbst rum. Normalerweise würde ich dir jetzt den Zweierkomplementring zeigen, aber ich find grad kein Bild im Netz.

_________________
Mit freundlichen Grüßen,
Daniel http://www.bradan.eu/
Bild
Ich bearbeite meine Postings häufig, kurz nachdem ich sie abgeschickt habe. - Windows 7 64bit, PureBasic: Die aktuelle Version
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 21:03 
Offline
Benutzeravatar

Registriert: 23.12.2005 12:41
Wohnort: München
Äh. Mein Post von vorhin war kompletter Murks. Ich meinte natürlich 10000000.
Ah, Ok. also noch +1.
Ok, Ok. Jetzt hab ich's wohl kapiert. Danke :)

_________________
BildKarte der Pureboard-Mitglieder


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Operator NOT
BeitragVerfasst: 31.10.2009 21:46 
Offline

Registriert: 10.11.2004 03:22
zum Vorzeichenbit:
das verhalten des Bytes bleibt identisch, egal ob es signed oder unsigned interpretiert wird.
also, wenn man immer um +1 erhöht, und das byte ist voll, erhält man wieder 0.
wenn das höchste bit als Vorzeichen interpretiert wird, dann darf sich dieses verhalten nicht ändern,
außerdem muss -1 +1 ja 0 ergeben.

wenn man also alle bits gesetzt hat außer dem höchsten, und addiert 1,
dann wird das höchste bit gesetzt und alle anderen gelöscht,
und diese zahl muss dann die allerkleinste negative zahl dieses typs sein.

wenn man das erstmal gefressen hat, ist es so logisch, dass man garnicht mehr anders denken kann.


zum Not
in PureBasic gibt es zwei Typen Logische Operatoren,
die Vergleichsoperatoren und die Arithmetischen Operatoren.
And, Or, Xor und Not gehören nur in Vergleiche,
& | ! und ~ sind für Bit-Operationen.

in manchen Sprachen kann man Logische Operatoren und Vergleiche in einem Term verwenden.
dort erhält dann der Term (A=5) den Wert #True, wenn A fünf ist, und #False wenn A etwas anderes ist.
in PureBasic ging das noch nie und geht bisher auch nicht, allerdings ist geplant, eine Boolean()-Funktion hinzuzufügen.

_________________
... machts gut und danke für den fisch ...


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite Vorherige  1, 2

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye