2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!

Previous topic - Next topic

Heiko

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




Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Heiko

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

Schranz0r

I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Heiko

hat ich eh vor, aber das ist wieder nen anderes projekt.
danke dir trotzdem für die hilfe.

Kitty Hello


Heiko

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.