各位高手进来帮小弟一把啊! java的题目!

class Test{
public static void main(String[] args){
System.out.println("第1段测试代码输出");
System.out.println(1>>32);
System.out.println(1L>>32);

System.out.println("第2段测试代码输出");
System.out.println(10>>5);
System.out.println(-10>>5);

System.out.println("第3段测试代码输出");
System.out.println(1<<31);
System.out.println(1L<<31);
System.out.println(1L<<63);

System.out.println("第4段测试代码输出");
System.out.println(1<<100);
System.out.println(1L<<100);

System.out.println("第5段测试代码输出");
System.out.println(7<<2);
System.out.println(7<<1<<1);

System.out.println("第6段测试代码输出");
int n = 34; int q=7;
System.out.println(q<<n);
for(int i = 0;i<n;i++)
q = q<<1;
System.out.println(q);

System.out.println("第7段测试代码输出");
int m = 2000000000;
System.out.println(m<<1);
System.out.println(m*2);

System.out.println("第8段测试代码输出");
System.out.println((byte)255);
System.out.println((short)65535);
System.out.println((byte)-129);
System.out.println((byte)129);
System.out.println((byte)128);

}
}
(1) 分析第1段代码,为何输出会不同?

(2) 分析第2段代码,正整数与负整数右移的最小值是什么?

(3) 分析第3段代码,三个语句输出为何不同?

(4) 分析第4段代码,两个语句输出为何不同?

(5) 分析第5段代码,两个移位运算是否等价?

(6) 分析第6段代码, q<<n与将q不断左移1位(共移动n位)是否相同?什么条件下相同?

(7) 分析第7段代码,左移1位与乘2是否等价?左移1位是否一定值翻倍?

(8) 分析第8段代码,说明什么情况下,int类型的数字转换为byte或者short类型,会出现符号变化,即正数变负数,负数变正数?

你的问题好多啊
我知道几个就回答几个吧
我的问题都是 关机java位移的问题
其中1、3、4的问题原因是一样的都是由于
L产生的,1和1L是不一样的,他们占用的内存空间不同长度不同,位移后结果自然不同。
我建议你看看我写的一篇文章
http://hi.baidu.com/maml897/blog/item/44880c3e29a836e655e7235f.html
里面关于位移写的很详细,看懂了位移也就懂了。
第八个问题是类型转换的问题
以第一个为例子 System.out.println((byte)255);
你现在要输出一个byte类型数字,但是byte只能表示-128-+127之间的数字,255太大了,就要转换这里有个规律,你可以这样记住256-255就是1了,然后加一个负号就好了。其他的也是以此类推。如果还不明白,可以给我留言。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-27
建议你百度一下 java 移位运算符的相关知识,知识是自己来查哦。
希望能帮到你。。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网