- public class Test2jingji {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- int i = 1024 * 1024 -9 ;
- String is = Integer.toBinaryString(i);
- System.out.println(is);
- int j = i0x0000ffff;
- is = Integer.toBinaryString(j);
- System.out.println(is);
- int k = i0xffff0000;
- is = Integer.toBinaryString(k);
- System.out.println(is);
- int l = k>>16;
- is = Integer.toBinaryString(l);
- System.out.println(is);
- int m = ~i;
- is = Integer.toBinaryString(m);
- System.out.println(is);
- int jiguo = ~(j + l);
- is = Integer.toBinaryString(jiguo);
- System.out.println(is);
- int jishu = new Test2jingji().jishuan(i);
- is = Integer.toBinaryString(jishu);
- System.out.println(is);
- }
- public int jishuan(int i)
- //比如i是一个三十二位的数,用一条语句,把他的低十六和高十六相加再取反
- {
- return ~((i0x0000ffff) + ((i0xffff0000)>>16));
- //一定要括号 + 运算比>>16优先
- }
- }
结果:
11111111111111110111
1111111111110111
11110000000000000000
1111
11111111111100000000000000001000
11111111111111101111111111111001
11111111111111101111111111111001
无符号右移 & 带符号右移
举个例子吧~~
-17
二进制表示为11101111
无符号右移2位 -17>>>2 二进制表示为00111011
带符号右移2位 -17>>2 二进制表示为11111011
-17
二进制表示为11101111
无符号右移2位 -17>>>2 二进制表示为00111011
带符号右移2位 -17>>2 二进制表示为11111011