• The Java programming language also provides operators that perform bitwise and bit shift operations on integral types.


  • The operators discussed in this section are less commonly used.


  • Therefore, the intent is to simply make you aware that these operators exist.


  • The unary bitwise complement operator "~" inverts a bit pattern; it can be applied to any of the integral types, making every "0" a "1" and every "1" a "0".


  • For example, a byte contains 8 bits; applying this operator to a value whose bit pattern is "00000000" would change its pattern to "11111111".


  • The signed left shift operator "<<" shifts a bit pattern to the left, and the signed right shift operator ">>" shifts a bit pattern to the right.


  • The bit pattern is given by the left-hand operand, and the number of positions to shift by the right-hand operand.


  • The unsigned right shift operator ">>>" shifts a zero into the leftmost position, while the leftmost position after ">>" depends on sign extension.


  •  
    // Java program to illustrate 
    // shift operators 
    public class operators { 
        public static void main(String[] args) 
        { 
      
            int a = 5; 
            int b = -10; 
      
            // left shift operator 
            // 0000 0101<<2 =0001 0100(20) 
            // similar to 5*(2^2) 
            System.out.println("a<<2 = " + (a << 2)); 
      
            // right shift operator 
            // 0000 0101 >> 2 =0000 0001(1) 
            // similar to 5/(2^2) 
            System.out.println("b>>2 = " + (b >> 2)); 
      
            // unsigned right shift operator 
            System.out.println("b>>>2 = " + (b >>> 2)); 
        } 
    } 
    Output :
    
    a<<2 = 20
    b>>2 = -3
    b>>>2 = 1073741821
    
    
    
  • The bitwise & operator performs a bitwise AND operation.


  • The bitwise ^ operator performs a bitwise exclusive OR operation.


  • The bitwise | operator performs a bitwise inclusive OR operation.


  • The following program, uses the bitwise AND operator to print the number "2" to standard output.


  •  
    
    public class Bitdemo { 
        public static void main(String[] args) 
        { 
            //Initial values 
            int a = 5; 
            int b = 7; 
      
            // bitwise and 
            // 0101 & 0111=0101 = 5 
            System.out.println("a&b = " + (a & b)); 
      
            // bitwise or 
            // 0101 | 0111=0111 = 7 
            System.out.println("a|b = " + (a | b)); 
      
            // bitwise xor 
            // 0101 ^ 0111=0010 = 2 
            System.out.println("a^b = " + (a ^ b)); 
      
            // bitwise and 
            // ~0101=1010 
            // will give 2's complement of 1010 = -6 
            System.out.println("~a = " + ~a); 
      
            // can also be combined with 
            // assignment operator to provide shorthand 
            // assignment 
            // a=a&b 
            a &= b; 
            System.out.println("a= " + a); 
        } 
    } 
    
    

     
    Output :
    
    a&b = 5
    a|b = 7
    a^b = 2
    ~a = -6
    a= 5 
    
    

  • The following quick reference summarizes the operators supported by the Java programming language.


  • Simple Assignment Operator


     
    =       Simple assignment operator
    
    
    

  • Arithmetic Operators


  •  
    +       Additive operator (also used
            for String concatenation)
    -       Subtraction operator
    *       Multiplication operator
    /       Division operator
    %       Remainder operator
    
    
    

  • Unary Operators


  •  
    +       Unary plus operator; indicates
            positive value (numbers are 
            positive without this, however)
    -       Unary minus operator; negates
            an expression
    ++      Increment operator; increments
            a value by 1
    --      Decrement operator; decrements
            a value by 1
    !       Logical complement operator;
            inverts the value of a boolean
            
    

  • Equality and Relational Operators


  •  
    ==      Equal to
    !=      Not equal to
    >       Greater than
    >=      Greater than or equal to
    <       Less than
    <=      Less than or equal to
    
    

  • Conditional Operators


  •  
    &&      Conditional-AND
    ||      Conditional-OR
    ?:      Ternary (shorthand for 
            if-then-else statement)
            
    

  • Type Comparison Operator


  •     
    instanceof      Compares an object to 
                    a specified type 
                    
                    
    

  • Bitwise and Bit Shift Operators


  •  
    ~       Unary bitwise complement
    <<      Signed left shift
    >>      Signed right shift
    >>>     Unsigned right shift
    &       Bitwise AND
    ^       Bitwise exclusive OR
    |       Bitwise inclusive OR