日期:2014-05-20  浏览次数:20627 次

JAVA编程思想
我在看一本书《JVA编程思想》 美 BruceEckel著  陈吴鹏 译
第p113页。
有个没有看懂啊,不知道有高手可否指教一二,就是关于JAVA中的:" >>> "这个右移位操作符。
有一句说“如果对byte或short值进行这样的位移运算得到的结果可能是不正确的结果。”
在程序中这样一段代码:

short s=-1;
pring(Integer.toBinaryString(s));
s >>> 10;
pring(Integer.toBinaryString(s));
byte b=-1;
pring(Integer.toBinaryString(b));
b >>> 10;
pring(Integer.toBinaryString(b));
b = -1;
pring(Integer.toBinaryString(b));
pring(Integer.toBinaryString(b >>> 10));

结果是是:
11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111
11111111 11111111 11111111 11111111
11111111 11111111 111111

这是为什么呢?没看明白啊

------解决方案--------------------
你看的是第几版,不是第四版吧?
------解决方案--------------------
如果知道二进制的话,用数字自己算算不就知道了。
------解决方案--------------------
位运算作暂时先跳过,对于初学者最好不要纠结太长的时间,以免影响其他章节的进度。如果能用移位操作把我的头像编写出来,基本上就属于移位的高级运用了。