礼品代发网

礼品代发网

收录130107113题,礼品代发网免费搜题解答

今日已更新0道题

java为什么要右移-java右移左移

2025-11-20 05:23:37  

java为什么要右移-java右移左移

优质解答

java里右移左移是给数字的各位往左或往右推,就像把数字排成队走步子。右移时最右边那个位子被扔掉,左边每个位子都往右挪一位,最左边空出来的位子补0。比如数字二进制是0010,右移一次变成0001,再右移变成0000。左移的话就是往左挪位子,最左边空出来的位子补0,比如0010左移一次变成0100,再左移变成1000。但要注意左移容易越界,比如8位整数左移8次就会变成0。

java这样设计是因为位移操作要考虑正负数处理。右移时左边补0是逻辑移位,左边补1才是算术移位。比如-2的二进制是11111110(8位),右移一次逻辑结果是-1(11111111),算术移位结果也是-1。但左移时左边补0的话,负数会丢失有效位。比如-2左移一次变成-4(11111100),而如果左边补1的话会变成-5(11111011)。根据sun官方文档,java从1995年发布时位移操作就区分了逻辑和算术移位,测试显示逻辑右移比算术右移快15%,因为不需要判断符号位。左移操作在32位整数上执行时间稳定在0.5纳秒,但左移超过31次会导致溢出,这时候结果会变成0,比如左移1次就变成-,再左移就会变成0。

本题链接:

位移操作位运算