50分请高手帮忙解释下下面这段java代码
由于没有学过JAVA,拿到这段代码非常郁闷,看不懂,请高手按步骤详细给个解释。s是一个16进制数字“2020661a”代码如下:s=s.toUpperCase();//这...
由于没有学过JAVA,拿到这段代码非常郁闷,看不懂,请高手按步骤详细给个解释。
s 是一个16进制数字“2020661a”
代码如下:
s=s.toUpperCase(); // 这应该是转大写吧?
char[] astore7 = s.toCharArray();
int istore6 = s.length(); // =8?
int istore5 = 0;
for(int i = 0; i < istore6; i++)
{
int istore3 = astore7[i];
istore5 += istore3;
}
istore5 = ((istore5 & 65535) * 78) + 2199;
请通晓的高手按照每一行的结果、运算进行解释,特别是for循环中每一步是多少,最后的&运算的详细说明,以及最后的结果。分数不多,请高手帮忙。 展开
s 是一个16进制数字“2020661a”
代码如下:
s=s.toUpperCase(); // 这应该是转大写吧?
char[] astore7 = s.toCharArray();
int istore6 = s.length(); // =8?
int istore5 = 0;
for(int i = 0; i < istore6; i++)
{
int istore3 = astore7[i];
istore5 += istore3;
}
istore5 = ((istore5 & 65535) * 78) + 2199;
请通晓的高手按照每一行的结果、运算进行解释,特别是for循环中每一步是多少,最后的&运算的详细说明,以及最后的结果。分数不多,请高手帮忙。 展开
展开全部
s=s.toUpperCase(); // 将字符串s中的所有字符转换成大写
char[] astore7 = s.toCharArray();//将字符串s拆成字符数组;等同{'2','0','2','0','6','6','1','A'}
int istore6 = s.length(); // 获取astore7字符数组的长度;刚好是8个
int istore5 = 0; //定义一个变量istore5,初始值为0
for(int i = 0; i < istore6; i++) //循环;从0开始;循环8次;i的值依次为0,1,2...7
{
//char类型转为int类型时;0——>48 1——>49 2——>50
int istore3 = astore7[i]; //定义一个变量istore3 让它的值为字符数组中的每一个;
//如i=0时;就是2转为int为50,等于i=1时就是0;转为int就是48...
istore5 += istore3; //将istore5的值加上istore3,如第一次是0,加上istore3后就是50了;
//然后下一次循环再加的话就是加48了。这句话可以看成istore5 = istore5 + istore3
}
//& 是为与;将2个值转化成二进制的值再做位计算;
//这里循环完毕之后istore5的结果是418;转化成二进制为110100010
//而65535转换成二进制为:1111111111111111 与它做位运算时结果还是418。
//可以得出的结论是任何比65535小的数与65535做位运算结果还是原来的值
istore5 = ((istore5 & 65535) * 78) + 2199;//然后将418乘以78等于32604再加2199结果就是34803
char[] astore7 = s.toCharArray();//将字符串s拆成字符数组;等同{'2','0','2','0','6','6','1','A'}
int istore6 = s.length(); // 获取astore7字符数组的长度;刚好是8个
int istore5 = 0; //定义一个变量istore5,初始值为0
for(int i = 0; i < istore6; i++) //循环;从0开始;循环8次;i的值依次为0,1,2...7
{
//char类型转为int类型时;0——>48 1——>49 2——>50
int istore3 = astore7[i]; //定义一个变量istore3 让它的值为字符数组中的每一个;
//如i=0时;就是2转为int为50,等于i=1时就是0;转为int就是48...
istore5 += istore3; //将istore5的值加上istore3,如第一次是0,加上istore3后就是50了;
//然后下一次循环再加的话就是加48了。这句话可以看成istore5 = istore5 + istore3
}
//& 是为与;将2个值转化成二进制的值再做位计算;
//这里循环完毕之后istore5的结果是418;转化成二进制为110100010
//而65535转换成二进制为:1111111111111111 与它做位运算时结果还是418。
//可以得出的结论是任何比65535小的数与65535做位运算结果还是原来的值
istore5 = ((istore5 & 65535) * 78) + 2199;//然后将418乘以78等于32604再加2199结果就是34803
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询