[ascoders] Re: Bitweise verschieben
- From: Ralf Siegel <ralf@xxxxxxxxxxx>
- To: ascoders@xxxxxxxxxxxxx
- Date: Wed, 27 Nov 2002 20:34:12 +0100
Im folgenden Beispiel wird -1 in eine 32-Bit-Ganzzahl umgewandelt und um ein
Bit nach rechts verschoben.
x = -1 >>> 1Das Ergebnis dieser Operation lautet wie folgt:
x = 2147483647 Warum in eine 32Bit Zahl ?
Hi Andre,
das lehnt sich an den Ganzzahlen-Datentyp 'int' an, welcher 32 bit
beansprucht (s. z.B. diverse Java Bücher). Bitweise Operatoren lassen sich
immer nur auf Ganzzahlen anwenden, andere Sprachen beschweren sich sogar
wenn du anderes versucht.
Wenn du z.B. ein kleines Java-Programm schreibst:
____________________________________________________________________
public class BitteEinBit {
public BitteEinBit() {
}
public static void main(String[] args) {
double a = -1;
System.out.println(a >>> 1);
}
}
____________________________________________________________________
bekommst du hier eine Fehlermeldung vom Compiler:
"BitteEinBit.java [19:1] operator >>> cannot be applied to double,int"
Wenn du aber anstelle von
double a = -1;
schreibst:
int a = -1;
funktioniert es.
In ActionScript sind Zahlen 64bit Gleitpunktzahlen (double) und der
Interpreter lässt viel mit sich machen ;o) D.h. die Gleitpunktzahlen werden
kurzerhand vor der eigentlichen >>> Operation in einen 32bit-Integer
umgewandelt und dann erst schlägt die bitweise Operation zu (gilt also für
alle bit-schieber).
Die Umwandlung in einen 32bit Integer passiert übrigens auch mit dem aus
Flash 4 bekannten int():
z1 = Math.round(111111111111111111); // 1.11111111111111e+17
z2 = int(111111111111111111); // -2074054208
ralf ...
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
- References:
- [ascoders] OT: Flash Plugin Switcher
- From: Alexander Blum
- [ascoders] Re: OT: Flash Plugin Switcher
- From: Andre Michelle
- [ascoders] Bitweise verschieben
- From: Andre Michelle
Other related posts:
- » [ascoders] Bitweise verschieben
- » [ascoders] Re: Bitweise verschieben
Im folgenden Beispiel wird -1 in eine 32-Bit-Ganzzahl umgewandelt und um ein Bit nach rechts verschoben. x = -1 >>> 1Das Ergebnis dieser Operation lautet wie folgt:
x = 2147483647 Warum in eine 32Bit Zahl ?
------------------------------------------------------ Archiv : http://www.freelists.org/archives/ascoders/ Optionen : http://www.freelists.org/list/ascoders ------------------------------------------------------
- [ascoders] OT: Flash Plugin Switcher
- From: Alexander Blum
- [ascoders] Re: OT: Flash Plugin Switcher
- From: Andre Michelle
- [ascoders] Bitweise verschieben
- From: Andre Michelle