t.b.j()
这个问题很有意思,我们刚刚都仅仅移动了2位或者4位,如果我们超过了int的位数也就是32位后会怎么样?我们如果对一个正数左移32位,低位补零补充了32次就变成0了,就如同下面代码所写的一样,最终a的结果会是什么。会变成0吗?
public static void main(String[] args) {
int a = 10;
a <<= 32;
System.out.println(a);
}
经过我们运行后发现a的结果最终没变还是10。我们如果改成左移33位,它的结果会变成20
。那么它的运算规律会不会是当超过位数后仅仅移动对位数的余数呢?比如对int做操作,它实际是运算 位数2
次。
经过多次试验发现答案确实就是这个猜想,当对int类型处理时,右移x
位的运算为x2
位。
我很抱歉,由于问题本身不提供具体的错误信息,我无法提供明确的解决方案。检查代码的过程中,需要逐步排除可能导致错误的地方,如语法错误、错误的变量名、错误的数据类型等等。您可以考虑使用调试器逐行调试来找到出错的具体位置和原因。也可以考虑借助搜索引擎寻找类似问题的解决方案和讨论。祝您解决问题顺利!