| |
|
|
Jörg Sellmeyer | Vielleicht habe ich ja nur einen Denkfehler aber sollte SetBit(l!,31,1) nicht %1000000000000000000000000000000000000000 ergeben? KompilierenMarkierenSeparierenWindow 600,800
Var f! = %11111111111111111111111111111111
Declare l!
WhileLoop 0,31
l! = SetBit(l!,&Loop,1)
Print l!,&Loop
Wend
print TestBit(l!,31),TestBit(f!,31)
Print f!,%11111111111111111111111111111111,l!,%10000000000000000000000000000000
l! = %10000000000000000000000000000000
Print l!
WhileLoop 0,31
Print TestBit(f!,&Loop),
Wend
WaitInput
Oder hängt das mit vorzeichenbehafteten Variablen zusammen? Aber l! = %10000000000000000000000000000000 geht ja.
Übrigens geht SetBit(N1,N2,N3) nur von 0-31. Vielleicht sollte das mit der Einführung von QuadInt auch mal aufgebohrt werden. Sollte es daran liegen, daß SetBit 31 automatisch das Vorzeichenbit setzt? |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 12.11.2011 ▲ |
|
|
|
|
Jörg Sellmeyer | Nur mal zur Ergänzung: Mit Quad funktioniert es auch. |
|
|
| |
|
|
|
RGH | Hm, ich verstehe Dein Problem nicht? Wenn ich den Code laufen lasse, macht er das, was man erwartet.
Prinzipiell würde ich aber davon abraten, Fließkommazahlen als Parameter für Bit-Operationen zu verwenden. Gedacht sind diese für Integervariablen von Integer bis Quad.
Gruß Roland |
|
|
| XProfan X3Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 04.02.2016 ▲ |
|
|
|
|
Jörg Sellmeyer | Es sollte gar keine Problemmeldung sein. Ich wollte nur erwähnen, dass SetBit jetzt auch mit Quads funktioniert. Das andere war nur ein Denkfehler von mir. |
|
|
| |
|
|