Deutsch
Bugs und vermeintliche

XProfan X2

Signed ./. UnSigned -Problem bei Hexkonstanten?

 
- Seite 1 -


Imho wird dieser Quelltext:

nicht korrekt abgearbeitet:



Hierbei setze ich x& auf den Wert $FFFFFFFE und frage danach x& ab ob es den selben Wert $FFFFFFFE besitzt. Wird aber "nein" ermittelt.

Oder übersehe ich dabei etwas?

So gehts:
cls
print $profVer
var x&=-2
casenot x&=-2 : messageBox "Fehler","",0
waitInput
end

So nicht:
und so gehts auch:

2 kB
Hochgeladen:10.02.2011
Ladeanzahl258
Herunterladen
 
10.02.2011  
 



 
- Seite 2 -



RGH
$FFFFFFE ist von sich aus nun mal ein positiver Wert. Auch Hexwerte können mit einem Vorzeichen versehen werden, -2 wäre in Hex nun mal -$2.

Trotzdem kann der Wert einem Longint ohne Overflow-Meldung zugewiesen werden. Sogar noch größere Werte. (Das war gewiß eine bewußte Entscheidung, da auch eine Fehlermeldung möglich gewesen wäre.)

Dann werden einfach die niedrigsten 4 Byte (=32 Bit) des Wertes. Da aber bei einem Signed-Longint (wie auch bei einem Signed-Quad) das höchste Bit für das Vorzeichen steht, geht der Wertebereich eben nur bis $7FFFFFFF. Werte ab $80000000 werden dann als negativ interpretiert (Überlauf).

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
10.02.2011  
 



Das ist mir so ja schon klar.

a& als signedLong hat den Wertebereich von -2147483648 bis +2147483647 -

wenn a& also den Wert -2 trägt, dann stehen die Bytes auf FE FF FF FF genauso wie die Bytes bei $FFFFFFFE auf FE FF FF FF stehen.

Ich habe ja gleich verstanden, dass das XProfan in diesem Fall das $FFFFFFFE eben anders "interpretiert" und das es dafür eine Erklärung (Vorzeichen) gibt.

Ich finde jedoch irgendwie auch nicht richtig, dass ein 32-Bit-Long mit Wert -2 nicht mit der Bytefolge $FFFFFFFE übereinstimmen soll aber kann es natürlich akzeptieren da durch das $/Hex-Zeichen nunmal dann in XProfan nicht 1:1 die Bytes gemeint sein müssen sondern eben eine "Interpretation".
 
10.02.2011  
 



Vor-zei-chen-bit...
 
10.02.2011  
 



Frabbing (10.02.11)
Vor-zei-chen-bit...


Ah, Du meinst Vor-zei-chen-bit, nicht etwa Vorzei-chenbit oder gar V-orzeiche-nbit bzw. vo-rze-ich-enb-it - nein, es ist das Vor-zei-chen-bit.

Das fehlt doch aber nicht bei $FFFFFFFE - also ist doch klar bei dem Bit das es sich ums Vorzeichenbit handelt wenn mit 32-Bit-Long verglichen wird.

Irgendwie bin ich wohl zu stumpf... ^^
 
10.02.2011  
 



Wo befindet sich denn das Vorzeichenbit?
 
10.02.2011  
 




RGH
Das Vorzeichenbit ist das höchstwertige Bit, also jenes, das bei $80000000 gesetzt wird, wenn es sich um ein vorzeichenloses Longint handelt.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
10.02.2011  
 



Alter Spielverderber.
 
10.02.2011  
 



@Frank: Vor-zei-chen-bit...
 
10.02.2011  
 



Frabbing (10.02.11)
Genau, dann schreib mal -2 als 32 und als 64 bit-Zahl binär untereinander und du solltest deinen Irrtum erkennen...


Schreib mal $FFFFFFFE und -2 jeweils 32-Bittig untereinander und die Macht von Grayskull ist mitdir...
 
10.02.2011  
 




Schreib mal $FFFFFFFE und -2 jeweils 32-Bittig untereinander


Ist ja keine Herausforderung.
Da ist das Rätsel der ganzen verschwundenen Postings heute schon rätselhafter...
 
10.02.2011  
 




RGH
Folgendes Programm zeigt (ab der nächsten Lieferung der Subscriptionsversion)* die Zusammenhänge:

* aktuell gibt es noch ein paar Probleme mit QuadInts, wenn sie als Parameter an Prozeduren übergeben werden und außerdem brauchte Delphi noch etwas Nachhilfe, damit die binären Operatoren auch mit Int64 (=Quad) funktionieren, was dazu führte dass |, &, <<, >>, TestBit() und SetBit() nur bis 32 Bit korrekt funktionierten.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
11.02.2011  
 



Aufgabe: "Setzen Sie auf möglichst coole Art und Weise mit XProfan das 2. Bit des Wertes einer 32-Bit-Long-Variable!"

Lösung:
l = -$FFFFFFFE

 
11.02.2011  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

24.943 Betrachtungen

Unbenanntvor 0 min.
iF02.01.2016
Georg Teles02.01.2016
E.T.26.12.2015
Jörg Sellmeyer18.11.2015
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie