public static void maain(String[] args){
int a = -11;
System.out.println(" a= "+a+"("+Integer.toBinaryString(a)+")");
System.out.println(" a>>2= "+(a>>2)+"("+Integer.toBinaryString(a>>2)+")");
System.out.println(" a>>>2= "+(a>>>2)+"("+Integer.toBinaryString(a>>>2)+")");
}
i think a>>>2 output is 001111111111111111111111111101
Because >>> means shift right and fill blanks with 0
am i thinking wrong?
>Solution :
Why do you think that Integer.toBinaryString()
outputs leading zeros? The documentation clearly states otherwise:
If the unsigned magnitude is zero, it is represented by a single zero character ‘0’ (‘\u0030’); otherwise, the first character of the representation of the unsigned magnitude will not be the zero character.
Java doesn’t offer a built-in method to convert an integer into a binary representation with leading zeros. Several possible solutions are offered at How to get 0-padded binary representation of an integer in java?
For example you could use:
System.out.println(" a>>>2= "+(a>>>2)+"("+String.format("%32s", Integer.toBinaryString(a>>>2)).replace(' ', '0')+")");