问题:
每种基本数据类型的量在内存中的表示都有固定的位数,当移动的位数超过最大位数时,是不是意味着原来数中的所有位都被移走了哪?
解答:
非也。因为Java中规定,在进行移位运算时,先约减右侧的操作数。也就是说,当左侧操作数是int类型时,右侧以32取模;当左侧操作数是long类型时,右侧以64取模。这样的规定可以保证不会讲原数中的所有位都移走。
例子:
int x = 1;
System.out.println("x>>>32"+(x>>>32));//结果为1
System.out.println("x>>>33"+(x>>>33));//结果为0
System.out.println("x>>32"+(x>>32));//结果为1
System.out.println("x>>33"+(x>>33));//结果为0
|
|