Author Topic: 2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!  (Read 1747 times)

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 495
    • View Profile
Ich konvertiere grad mal wieder nen bb code und bin da jetzt auf ein problem gestossen, was ich noch nicht wirklich lösen konnte.
Bevor jemand fragt, oder gleich eine Lösung weiß, die ich übersehen habe, ich hab die Sufu bemüht mir die Hilfe durchgelesen, nix passendes gefunden.

Und zwar gibts in BB den Befehl  "Shr"  dieser verschiebt alle bits eines Integerwertes nach rechts.(es gibt auch noch Shl (nach links verschieben) und Sar (rechtsverschiebung mit gemerktem Vorzeichen))

In der Hilfe zu diesem Befehl steht, dass es das gleiche wäre als wenn man den Integerwert durch 2 teilt.
Soweit wäre die Umsetzung ja einfach, aber dort steht auch noch, dass bei dieser verschiebung alle "hinten rausfallenden" bits einfach abgeschnitten werden.

Wie könnte man das in GLB umsetzen?hier der link zur bb hilfe, zum nachlesen......http://www.blitzforum.de/help/Shr


Und nun meine zweite Frage.
Funktionen und deren Handling ist mir klar, aber ich habe eine Funktion in BB gefunden, bei der ich nicht weiß, ob solch eine syntax in glb auch möglich ist.
Ich habs noch nicht probiert, weil ich dazu erst das Shr Problem gelöst haben muss.
Und zwar folgender Code....schonmal nach GLB konvertiert, soweit möglich...
Code: GLBasic [Select]
FUNCTION Swap32: value
   LOCAL b1 = Value AND 255
   LOCAL b2 = (Value Shr 8) AND 255
   LOCAL b3 = (Value Shr 16) AND 255
   LOCAL b4 = (Value Shr 24) AND 255

   b1 = b1 Shl 24
   b2 = b2 Shl 16
   b3 = b3 Shl 8

   RETURN b1 OR b2 OR b3 OR b4
ENDFUNCTION

Zuerst natürlich das Problem dieser Art "LOCAL b2 = (Value Shr 8) AND 255" wie oben schon beschrieben, und dann aber eben die return ausgabe.

erklärt wurde es mir, dass der value wert in 4 bytes aufgeteilt wird und über eine OR Maske übereinandergelegt wird.

irgendwie so

Code: GLBasic [Select]
00000001
00000010
00001101
11100111
------------
11101111 = 239 dec

haltet mich für noobisch, aber ich hab jetzt überall gesucht, und noch nichts gefunden, um das nach glb zu konvertieren....



Ryzen 5 2400G - MSI B450 Tomahawk

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5009
  • O Rly?
    • View Profile
Schau mal in der Hilfe unter bAND() !
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 495
    • View Profile
Sooo ich hab jetzt das mit dem verschieben hinbekommen(zumindest nach rechts), das mit dem OR ist mir noch ein Rätsel.
OR ist ja eigentlich eine auswahl, bei unterschiedlicher bedingung.

aber würde dieses RETURN x OR y OR z         etc. , hier bei GLB auch gehen?

[edit] is ja doch einfach nur bOR
« Last Edit: 2008-Sep-28 by Heiko »
Ryzen 5 2400G - MSI B450 Tomahawk

Offline Schranz0r

  • Premium User :)
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 5009
  • O Rly?
    • View Profile
Entweder OR oder AND musste testen.
I <3 DGArray's :D

PC:
AMD RYzen 7 1700 @3.9Ghz, 16GB HyperX Fury 2666Mhz Ram, ASUS ROG GTX 1060 STRIX 6GB, Windows 10 Pro 64Bit, MSi Tomahawk B350 Mainboard

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 495
    • View Profile
hat ich eh vor, aber das ist wieder nen anderes projekt.
danke dir trotzdem für die hilfe.
Ryzen 5 2400G - MSI B450 Tomahawk

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10683
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com

Offline Heiko

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 495
    • View Profile
cool, genau das hab ich gestern auch schon gemacht, okay mit hilfe, aber ich habs....

smile...

achaj, bei bb gibts da noch SAR, welches mit SHR gleichzusetzen ist, also bit shifting right, aber sich das vorzeichen merkt.
Ryzen 5 2400G - MSI B450 Tomahawk