GLBasic forum

Other languages => GLBasic - de => Topic started by: Heiko on 2008-Sep-27

Title: 2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!
Post by: Heiko on 2008-Sep-27
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....



Title: Re: 2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!
Post by: Schranz0r on 2008-Sep-27
Schau mal in der Hilfe unter bAND() !
Title: Re: 2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!
Post by: Heiko on 2008-Sep-28
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
Title: Re: 2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!
Post by: Schranz0r on 2008-Sep-28
Entweder OR oder AND musste testen.
Title: Re: 2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!
Post by: Heiko on 2008-Sep-28
hat ich eh vor, aber das ist wieder nen anderes projekt.
danke dir trotzdem für die hilfe.
Title: Re: 2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!
Post by: Kitty Hello on 2008-Sep-29
bit shifts?

http://www.glbasic.com/forum/index.php?topic=1547.msg10319#msg10319 (http://www.glbasic.com/forum/index.php?topic=1547.msg10319#msg10319)

In V6 kann man mit DGNat besser arbeiten.
Title: Re: 2 Probs:Bits eines Integerwertes verschieben? Return Chaos...!
Post by: Heiko on 2008-Sep-29
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.