位操作>>>无符号右移,第一个符号位不变,其他位补0>>右移,整体右移,左边补0<<左移,Move左边整体,右边填充0|or:有1则1&and:有0则0^XOR:相反为1,否则为0~Negation:1.5以后jdk中写一个Integer等数字的测试类型维护一个成员名为SIZE的变量,以Integer为例:/***用于表示二进制补码形式的{@codeint}值的位数。**@since1.5*/@NativepublicstaticfinalintSIZE=32;可以看出Integer的长度是32位。下面是测试代码:/***打印int数据的二进制值**@paramnumint*/privatestaticvoidprintBit(intnum){for(inti=31;i>=0;i--){inti1=num&(1<=0;i--){inti1=num&(1<>3;System.out.println("右移:");打印位(右移);intunsignRightMove=i>>>3;System.out.println("unsignRightMove:");打印位(unsignRightMove);System.out.println("===========");System.out.println("我:10");打印位(我);整数j=-10;System.out.println("j:-10");打印位(j);整数或=我|j;System.out.println("i|j:");打印位(或);intand=i&j;System.out.println("i&j:");打印位(和);intxor=i^j;System.out.println("i^j:");打印位(异或);intneg=~i;System.out.println("~i:");打印位(否定);}}运行结果如下:从上图可以看出反码和补码,-10的二进制值为1111111111111111111111111111111111110110,这里做一下解释。1表示负数。先把这个二进制数取反得到0000000000000000000000000001001,也就是反码,再把反码加1得到补码:000000000000000000000000000001010,这个数在二进制中是10,再加上符号位,即-10。Java中各个基本数据的长度见Integer中的代码:/***Thenumberofbitsusedtorepresenta{@codeint}valueintwo's*补二进制形式。**@since1.5*/@NativepublicstaticfinalintSIZE=32;/***用于表示二进制补码形式的{@codeint}值的字节数。**@since1.8*/publicstaticfinalintBYTES=SIZE/Byte.SIZE;knownInteger二进制长度为32位,有四个字节。类型二进制长度字节范围byte82-128~127short164-32768~32767int328-2^31~2^31-1long6416-2^63~2^63-1char1640~65535代码地址
