publicclassShift4JTest{/**
*移位操作符有>>(右移)、<<(左移)、>>>(右移)
* >>是带符号右移,负数高位补1,正数高位补0
* <<左移不管负数还是正数,在低位永远补0
* >>>是不带符号右移,不论负数还是正数,高位补0
*/publicstaticvoidmain(String[] args){int a =10;int b = a <<1;//相当于 乘以2的1次幂int c = a <<2;//相当于 乘以2的2次幂int d = a <<3;//相当于 乘以2的3次幂BitUtil.getFull32BinaryString(a);System.out.println(b);BitUtil.getFull32BinaryString(b);System.out.println(c);BitUtil.getFull32BinaryString(c);System.out.println(d);BitUtil.getFull32BinaryString(d);}publicclassBitUtil{publicstaticStringgetFull32BinaryString(Integer a){String s =Integer.toBinaryString(a);int count =32- s.length();StringBuilder sb =newStringBuilder();for(int i =0; i < count; i++){
sb.append("0");if(i !=0&& i %8==0) sb.append(" ");}
sb.append(s);System.out.println(sb.toString());return sb.toString();}}}
int a =80;int b = a >>1;//相当于 除以2的1次幂int c = a >>2;//相当于 除以2的2次幂int d = a >>3;//相当于 除以2的3次幂System.out.println(a);BitUtil.getFull32BinaryString(a);System.out.println(b);BitUtil.getFull32BinaryString(b);System.out.println(c);BitUtil.getFull32BinaryString(c);System.out.println(d);BitUtil.getFull32BinaryString(d);
int a =-80;int b = a >>1;//相当于 除以2的1次幂int c = a >>2;//相当于 除以2的2次幂int d = a >>3;//相当于 除以2的3次幂System.out.println(a);BitUtil.getFull32BinaryString(a);System.out.println(b);BitUtil.getFull32BinaryString(b);System.out.println(c);BitUtil.getFull32BinaryString(c);System.out.println(d);BitUtil.getFull32BinaryString(d);
//正数>>>和>> 是一样的int a =80;int b = a >>>1;//相当于 除以2的1次幂int c = a >>>2;//相当于 除以2的2次幂int d = a >>>3;//相当于 除以2的3次幂System.out.println(a);BitUtil.getFull32BinaryString(a);System.out.println(b);BitUtil.getFull32BinaryString(b);System.out.println(c);BitUtil.getFull32BinaryString(c);System.out.println(d);BitUtil.getFull32BinaryString(d);
//在负数的情况下>>>和>> 是不一样的 //>>>不论正负数 高位永远补0int a =-80;int b = a >>>1;int c = a >>>2;int d = a >>>3;System.out.println(a);BitUtil.getFull32BinaryString(a);System.out.println(b);BitUtil.getFull32BinaryString(b);System.out.println(c);BitUtil.getFull32BinaryString(c);System.out.println(d);BitUtil.getFull32BinaryString(d);