Experimente mit Bit-Operatoren

Status
Nicht offen für weitere Antworten.

fkissig

Mitglied
Hi,

ich habe ein bisschen mit Bit-Operatoren herumexperimentiert:

Code:
class Logical_Bit
{ 
   static byte b1, b2;
   static int result;
   public static void main(String[] arg)
   {
      b1 = 0;
      b2 = 1;
      result = b1 >> b2;  
      System.out.println("0 >> 1 = " + result);
      
      b1 = 1;
      b2 = 1;
      result = b1 >> b2;  
      System.out.println("1 >> 1 = " + result);
      
      b1 = 10;
      b2 = 1;
      result = b1 >> b2;  
      System.out.println("10 >> 1 = " + result);
      
      b1 = 11;
      b2 = 1;
      result = b1 >> b2;  
      System.out.println("11 >> 1 = " + result);
      
      b1 = 100;
      b2 = 1;
      result = b1 >> b2;  
      System.out.println("100 >> 1 = " + result);
      
      b1 = 101;
      b2 = 1;
      result = b1 >> b2;  
      System.out.println("101 >> 1 = " + result);
      
      b1 = 110;
      b2 = 1;
      result = b1 >> b2;  
      System.out.println("110 >> 1 = " + result);
      
      b1 = 111;
      b2 = 1;
      result = b1 >> b2;  
      System.out.println("111 >> 1 = " + result);
   }
}

Das ganze gibt folgendes aus:

0 >> 1 = 0
1 >> 1 = 0
10 >> 1 = 5
11 >> 1 = 5
100 >> 1 = 50
101 >> 1 = 50
110 >> 1 = 55
111 >> 1 = 55

Habe ne Weile herumgerätselt, kann aber keine Logik erkennen. Kann mir jemand helfen?
 
G

Guest

Gast
Die jeweilige Zahl wird ein Bit nach rechts verschoben.

10110110 // Vorher
01011011 // Nachher
 
G

Guest

Gast
Java hat (dummerweise) keine Binary Literals, d.h. Du kannst Binärzahlen nicht einfach so z.B. per z.B. 100b eintippen. (Einfach nur per 100 geht eh nicht, da dass natürlich dann als Dezimalzahl interpretiert wird)
Du versorgst die >> - Operation also tatsächlich mit den (Dezimal-)Zahlen 1, 10, 11, welche jeweils in ihrer Binär-Repräsentation 1, 1010, 1011 (Herauszufinden mit Integer.toBinaryString(20)) lauten. Darauf dann die Rechtsshift-Operation um ein Bit >> 1 angewandt, erzeugt 0, 101, 101, also 0, 5, 5.

Eine Möglichkeit, aus Binärstrings Dezimalzahlen zu machen geht per Integer.valueOf("101010", 2)
 
G

Guest

Gast
(Hey, ich wurde ausgeloggt)
So wie Gast vorher das beschrieb, gilt das aber nur für die Binärrepräsentation !
Du musst Dir die Dezimalzahlen also erst als Binärzahlen vorstellen.
 

Illuvatar

Top Contributor
Code:
x >> y // entspricht x / (2 ^ y), wobei abgerundet wird
x << y // entspricht x * (2 ^ y)

x = x << 2;
//ist eben schneller als
x *= 4;
 

0xdeadbeef

Top Contributor
Illuvatar hat gesagt.:
Code:
x = x << 2;
//ist eben schneller als
x *= 4;

Das ist für einen x86-Prozessor vermutlich nach wie vor korrekt, gilt aber wei weitem nicht für jeden Prozessor. Viele RISC-Prozessoren können zwar in 1-2 Takten multiplizieren, haben aber keine Shift-Operatoren mehr für jeden mögliche Shift-Weite. So kann man leicht durch ein "optimiertes" 'x<<7' bei 7 Zyklen enden.
Im Rahmen plattformunabhäniger Java-Entwicklung sollte man auf derlei Optimierungen also eventuell verzichten...
In C übrigens auch, denn dort wird jeder gute Compiler bei Multiplikation/Divisionen die für den Prozessor optimale Strategie wählen.
Die Möglichkeit fehlt zwar dem Java-Compiler, weil er ja systemunabhänigen Code erzeugt, aber eventuell kann die JVM bzw. der JIT-Compiler diese Optimierungen vornehmen.
 

Agent_Smith

Mitglied
Sauber Danke ich bin ein Anfänger in Java und konnte mir überhaupt nichts vorstellen Was Bit-Operatorne sind aber jetzt habe ich eine Genau Vorstellung bekommen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J tomcat 4.1.39 experimente 8) Java Basics - Anfänger-Themen 4
B Spielereien mit bit wise Operatoren und langen Binärzahlen Java Basics - Anfänger-Themen 3
K Für was braucht man die left und right shift operatoren? Was bringen die, also welchen Zweck haben die? Java Basics - Anfänger-Themen 15
Kleinerals2 NaN Operatoren Java Basics - Anfänger-Themen 3
S Und-Abfrage mit mehreren Ungleich-Operatoren Java Basics - Anfänger-Themen 17
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
D Erste Schritte Operatoren zur Manipulation von Bits "~" Java Basics - Anfänger-Themen 5
M Operatoren Umwandlung div. Operatoren Java Basics - Anfänger-Themen 7
V Operatoren Was will mir die Tabelle in meinem Lehrbuch sagen? (logische Operatoren) Java Basics - Anfänger-Themen 4
S Bitweise Operatoren" >>>",">>","<<" erklärung Java Basics - Anfänger-Themen 5
G operatoren Java Basics - Anfänger-Themen 3
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
T Verständnisfrage Zuweisungs-/arithmet. Operatoren Java Basics - Anfänger-Themen 2
X Shift-Operatoren Java Basics - Anfänger-Themen 1
P Bitweise Operatoren Java Basics - Anfänger-Themen 2
Phillip Bitweise Operatoren Java Basics - Anfänger-Themen 11
C Operatoren Java Basics - Anfänger-Themen 6
P Taschenrechner, operatoren Java Basics - Anfänger-Themen 4
M Einfache und Doppelte Operatoren Java Basics - Anfänger-Themen 3
S Operatoren & Terminierung Java Basics - Anfänger-Themen 1
A Bitweise Operatoren Java Basics - Anfänger-Themen 1
O Priorität bei Operatoren Java Basics - Anfänger-Themen 4
N Potenzierung durch einfache Operatoren Java Basics - Anfänger-Themen 13
B Geschwindigkeitsabhängigkeit von Anz. d. Operatoren pro Zeile Java Basics - Anfänger-Themen 12
M hexadezimal in binär mit Hilfe von Shift-Operatoren Java Basics - Anfänger-Themen 6
S Arithmetische Operatoren Java Basics - Anfänger-Themen 7
L Erste Schritte Fragen zu Arrays, Inkrement Operatoren, Dekrement Operatoren ? Java Basics - Anfänger-Themen 9
lulas[]args Fehler - Logische Operatoren Java Basics - Anfänger-Themen 9
H Nur Zahlen, Klammern und Operatoren Java Basics - Anfänger-Themen 3
D Frage zu Bit Operatoren in der Programmierung Java Basics - Anfänger-Themen 9
P Anzahl der else if Operatoren begrenzt?? Java Basics - Anfänger-Themen 7
L [Logische Operatoren] referenzierbar? Java Basics - Anfänger-Themen 3
W Was tun die Operatoren ? und : (Bedingungen) Java Basics - Anfänger-Themen 15
W Datentypen Operatoren für eigenen Datentyp nutzen Java Basics - Anfänger-Themen 2
G Logische und Bitweise Operatoren Java Basics - Anfänger-Themen 2
S Datentypen Operatoren und Ausdrücke (formel richtig rechnen) Java Basics - Anfänger-Themen 8
E Logische Operatoren && und & Java Basics - Anfänger-Themen 14
? Operatoren && || Java Basics - Anfänger-Themen 10
M Aufgabe Arithmetische Operatoren Java Basics - Anfänger-Themen 12
H While Schleife mit Operatoren Java Basics - Anfänger-Themen 14
T Rechnen mit Operatoren Java Basics - Anfänger-Themen 2
M Arithmetische Operatoren Java Basics - Anfänger-Themen 40
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
M Sind ternäre Operatoren für einen guten Programmierstil wichtig ? Java Basics - Anfänger-Themen 10
E IF Anweisung mit logischen Operatoren Java Basics - Anfänger-Themen 18
JStickman Was bringen Bit-Operatoren? Java Basics - Anfänger-Themen 14
J Matheaufgabe aus String mit mehreren Operatoren Java Basics - Anfänger-Themen 16
D Logische Operatoren Java Basics - Anfänger-Themen 6
D Grundlagen - Operatoren Java Basics - Anfänger-Themen 5
1 Datentypen Rückgabetyp von Java-Operatoren Java Basics - Anfänger-Themen 2
V Bitweise Operatoren in der Grafikprogrammierung Java Basics - Anfänger-Themen 2
SebSnake Operatoren für eigene Datentypen Java Basics - Anfänger-Themen 3
M logische operatoren Java Basics - Anfänger-Themen 2
C Variablen für Operatoren Java Basics - Anfänger-Themen 3
W Rangfolge von Operatoren Java Basics - Anfänger-Themen 16
N zahlen und operatoren gemischt in einem Feld Java Basics - Anfänger-Themen 9
T Logische Operatoren Java Basics - Anfänger-Themen 39
C Dynamische Operatoren! Java Basics - Anfänger-Themen 5
G Shift Operatoren Java Basics - Anfänger-Themen 4
R Bedingte Opeatoren / Verschachtelte Operatoren Java Basics - Anfänger-Themen 4
7 Operatoren in der While Schleife Java Basics - Anfänger-Themen 5
H Postfix Operatoren Java Basics - Anfänger-Themen 2
S Variablen + Operatoren "mixen" Java Basics - Anfänger-Themen 5
G Nutzen von bitweisen Operatoren Java Basics - Anfänger-Themen 8
J Operatoren in Java Java Basics - Anfänger-Themen 2
S Verwendung bitweiser Operatoren Java Basics - Anfänger-Themen 6
R Binäre logische Operatoren Java Basics - Anfänger-Themen 21

Ähnliche Java Themen

Neue Themen


Oben