Italia
Bugs und vermeintliche

XProfan X2

Signed ./. UnSigned -Problem bei Hexkonstanten?

 
- Page 1 -


Imho wird dieser Quelltext:

nicht korrekt abgearbeitet:



Hierbei setze ich x& auf il valore $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
Downloadcounter258
Download
 
10.02.2011  
 



 
- Page 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 possibile 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 per das Vorzeichen steht, geht der Wertebereich eben nur bis $7FFFFFFF. Werte ab $80000000 werden dann als negativ interpretiert (Überlauf).

Saluto
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 il valore -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 naturalmente 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 è 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.

Saluto
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 trasferimento 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.

Saluto
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 possibile coole Art und Weise mit XProfan das 2. Bit des Wertes einer 32-Bit-Long-Variable!"

Lösung:
l = -$FFFFFFFE

 
11.02.2011  
 




Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

25.140 Views

Untitledvor 0 min.
iF02.01.2016
Georg Teles02.01.2016
E.T.26.12.2015
Jörg Sellmeyer18.11.2015
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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