2^24=16777200?

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

bjh

Betreff: 2^24=16777200?

BeitragMi, Apr 03, 2013 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
gebt mal:
BlitzBasic: [AUSKLAPPEN]
Print 2^24
WaitKey
End

ein.

was soll das?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Apr 03, 2013 17:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Durch das potenzieren wird es automatisch als Float angesehen. Und diese haben bei 32 Bit bereits in diesem Bereich Rundungsfehler.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

bjh

BeitragMi, Apr 03, 2013 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen dank für die information.
nervt mich irgendwie, dass es immer solche stolpersteine gibt.
weil wenns ums bit-verändern geht, dann kommt da nur scheiße raus.

Xaymar

ehemals "Cgamer"

BeitragMi, Apr 03, 2013 18:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst dafür Shl verwenden, einfach 1 Shl 24 und du solltest 16777216 rausbekommen. (Ich hoffe ich hab die Richtung richtig in Erinnerung.)

PSY

BeitragMi, Apr 03, 2013 18:23
Antworten mit Zitat
Benutzer-Profile anzeigen
oder einfach
Code: [AUSKLAPPEN]

a%=2^24


PSY
PSY LABS Games
Coders don't die, they just gosub without return
 

bjh

BeitragMi, Apr 03, 2013 18:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ok
danke psy

BtbN

BeitragMi, Apr 03, 2013 21:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Was auch nichts hilft, da ^ ein reiner float-operator ist und dann einfach das float zu einem int, inklusive dem rundungs-fehler, konvertiert wird.
Für Binäres arbeiten gibt es wie bereits gesagt die Shift-Operatoren.

PSY

BeitragDo, Apr 04, 2013 7:13
Antworten mit Zitat
Benutzer-Profile anzeigen
BtbN hat Folgendes geschrieben:
Was auch nichts hilft, da ^ ein reiner float-operator ist und dann einfach das float zu einem int, inklusive dem rundungs-fehler, konvertiert wird.
Für Binäres arbeiten gibt es wie bereits gesagt die Shift-Operatoren.


Stimmt nicht.

Code: [AUSKLAPPEN]
Print 2^24
a% = 2^24
Print a
WaitKey
End


Output:
16777200.0
16777216

^^

PSY
PSY LABS Games
Coders don't die, they just gosub without return

count-doku

BeitragDo, Apr 04, 2013 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe da gerade was Lustiges bemerkt...

Dieser Code:
BlitzBasic: [AUSKLAPPEN]

a% = 2^24
b#= 2^24
Print a
Print Int(b)
Print b
WaitKey
End


Gibt auch bei a und Int(b) die richtigen 16777216 aus. Bei Print b kommt der falsche Wert.
Also scheint es absolut egal, wann die Int Konvertierung stattfindet. Razz

lg,
Count-Doku

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Apr 04, 2013 18:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Schrittweite des Rundungsfehler in dem Wertebereich liegt bei 2 etwa. Das Ergebnis von count-doku kann bei B#=(2^24)+1 nicht beeinflusst werden. Erst eine +2 zeigt wieder einen korrekten Wert an.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group