class Test
{
public static void main(String args[])
{
int i=-3;
System.out.println(Integer.toBinaryString(i<<1));
System.out.println(Integer.toBinaryString(i*2));
System.out.println(Integer.toBinaryString(i>>1));
System.out.println(Integer.toBinaryString(i/2));
}
}
{
public static void main(String args[])
{
int i=-3;
System.out.println(Integer.toBinaryString(i<<1));
System.out.println(Integer.toBinaryString(i*2));
System.out.println(Integer.toBinaryString(i>>1));
System.out.println(Integer.toBinaryString(i/2));
}
}
System.out.println(Integer.toBinaryString(i/2));但上面的结果不一样呀,(i/2) 不就是除2取整吗?
System.out.println(Integer.toBinaryString(-3>>1));
System.out.println(Integer.toBinaryString(-3/2));
System.out.println(Integer.toBinaryString(-1));输出是:11111111111111111111111111111101
11111111111111111111111111111110
11111111111111111111111111111111
11111111111111111111111111111111发现问题没有?
第一行输出是-3
第二行输出是-3右移一位,由于是负数,高位补1
第四行输出是-1
而第三行输出跟第四行输出一样,说明什么?这就说明是输出的是-(3/2),即-1明白?
参见:http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.19