J2SE论坛网»J2SE技术»右移位">>"操作符的问题

右移位">>"操作符的问题

问?:
thinkjava第三版中说:带符号的右移位>>使用“根据正负号来扩展的规则:如果这个值是正的,
则高位一律填零;如果这个值是负的,则高位一律填一。
但是:System.out.println(-1>>1);输出的结果还是 -1
这是为什么啊?
答!: 1:
-1 在计算机中是用补码的形式存储的,也就是 0x FF FF FF FF,一共32个1,
那么-1>>1,高位填1,这个数值仍然不变,还是-1
答!: 2:
这里的-1是int型,占4字节,存在机器中用-1的补码表示:11111111 11111111 11111111 11111111
,当-1右移时在内存中的数没有变化,所以输出仍为-1

答!: 3:
>>>运算符右移补0
答!: 4:
-1 int
原 1000 0000 0000 0000 0000 0000 0000 0001
反 1111 1111 1111 1111 1111 1111 1111 1110
补 1111 1111 1111 1111 1111 1111 1111 1111

-1>>1
1111 1111 1111 1111 1111 1111 1111 1111 >>1 1111 1111 1111 1111 1111 1111 1111 1111

相关JAVA教程:
如何在swing中改变按钮大小
BufferedRead 的问题,大家来看看
如何判断从命令行输入的数值是不是某种基本类型?
请教一段for循环代码
一个java类里面全是static方法,如何声明这个类的接口?
关于XML的问题?
关于解析ascii码生成的报文的中文问题,急!!!
IE如何判断请求的URL传回的数据是用来下载,还是显示
有关response问题?
如何接受从命令行输入的数?
请高手指点一下,谢谢
请问如何读出这个message.properties文件(急,谢谢)