public class Binary { public static void main( String args[] ) { int i1 = 0x2f; //2f is a hexadecimal System.out.println( "i1: " + i1 ) ; // 6.022 * 10 power 23 double largeValue = 6.022e23; System.out.println( "largeValue: " + largeValue ) ; int binaryNumber1 = 0b1101; int binaryNumber2 = 0b0100; //Operator & 2 bits and to 1 if both are 1 else //the result is 0 System.out.println( "binaryNumber1 & binaryNumber2 " + (binaryNumber1 & binaryNumber2) ) ; System.out.println( Integer.toBinaryString( binaryNumber1 & binaryNumber2) ) ; //Operator | on 2 bits and is 1 if any bit is 1 System.out.println( "binaryNumber1 | binaryNumber2: " + (binaryNumber1 | binaryNumber2) ) ; System.out.println( Integer.toBinaryString( binaryNumber1 | binaryNumber2) ) ; byte binaryNumber3 = (byte)0b00000101; byte binaryNumber4 = (byte)0b11111111; System.out.println( binaryNumber3 ) ; System.out.println( binaryNumber4 ) ; binaryNumber3 = (byte)( binaryNumber3 << 1 ) ; System.out.println( binaryNumber3 ) ; //Since the no is negative 1's are inserted to the left binaryNumber4 = (byte)( binaryNumber4 >> 1 ) ; System.out.println( binaryNumber4 ) ; // binaryNumber4 is still -1 at this point // 0 is inserted on the left hand side //by the >>> operator System.out.println( "---" ) ; System.out.println( binaryNumber4 ) ; //Works properly System.out.println( binaryNumber4 >>> 1 ) ; // binaryNumber4 is -1 so expecting 0's inserted on the //left hand side //Why does this not work ? binaryNumber4 = (byte)( binaryNumber4 >>> 1 ) ; System.out.println( binaryNumber4 ) ; } } //class