[求助]>>>,>>,
public class Ceshi{public static void main(String args[]){
int a=20; //二进制是10100;
int c=a>>>10; //这一行
System.out.println(Integer.toBinaryString(c));
}
}
我看书对位操作有三种>>>(逻辑右移,无符号右移),>>数学右移,有符号,左移<<
不知对位的操作还有哪些,怎么用,
为什么上面的操作执行a>>>10与a>>10结果都是0,只有a<<10结果才是101000000000000;
先说a>>>10,它是无符号右移,a>>>10表示A的二进制数向右移动10位,即截去右边10位,左边填充10个0;
按我的理解结果是000000000010100,可结果是0;
再说a>>10,它是有符号右移,a>>10表示A的二进制数向右移动10位,即截去右边10位,左边填充符号位(10个1);
按我的理解结果是111111111110100,可结果也是0;
只有最后一个(a<<10左移)跟我自学理解的一样,汗呀,不知原因,望大家给我讲讲这方面的知识.
还有个问题
public class Ceshi{
public static void main(String args[]){
int x=3,y=5,a=~x,b=x&y,c=x|y,d=x^y;
System.out.println(Integer.toBinaryString(x));
System.out.println(Integer.toBinaryString(y));
System.out.println(Integer.toBinaryString(a));
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.toBinaryString(c));
System.out.println(Integer.toBinaryString(d));
}
}
这个程序,跟我推算的结果有一个不同.
它输出的是
D:\>java Ceshi
11
101
11111111111111111111111111111100
1
111
110
我推算的是
11
101
00 //11取反不是00吗,为什么变成上面那个格式了!!!
001
111
110
讲讲呀
[此贴子已经被作者于2006-5-15 21:45:04编辑过]