m0_74013050 2023-04-01 23:55
浏览 12
已结题

为什么右移操作符移动位数为变量时会出现错误啊,求解答


    public static void main(String[] args) {
        int[] arr = {1, 2, 5, 2};
        System.out.println(Arrays.toString(Find2(arr)));
    }

    public static int[] Find2(int[] arr) {
        int Num;
        int ArrLength= arr.length;
        int[] class1 = new int[ArrLength];
        int[] class2 = new int[ArrLength];
        int[] save = new int[2];
        Num = Find1(arr);
        for (int i = 0; i < 32 ;Num = Num >> (++i)) {
            if((Num & 1)==1){
                for (int x = 0, y = 0, j = 0; j < ArrLength ; j++) {
                    if((arr[j]>>i&1) == 0){
                        class1[x] = arr[j];
                        x++;
                    }
                    if((arr[j]>>i&1) == 1){
                        class2[y] = arr[j];
                        y++;
                    }
                }
                break;
            }
        }
        save[0]=Find1(class1);
        save[1]=Find1(class2);
        return save;
    }

当Num的值为4时运行 for (int i = 0; i < 32 ;Num=Num>>(++i))以后Num会变成0,把++i改成2以后结果又变成正常的Num的值就是正常的1了。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 已结题 (查看结题原因) 4月2日
    • 修改了问题 4月1日
    • 创建了问题 4月1日

    悬赏问题

    • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
    • ¥30 comfyui openpose报错
    • ¥20 Wpf Datarid单元格闪烁效果的实现
    • ¥15 图像分割、图像边缘提取
    • ¥15 sqlserver执行存储过程报错
    • ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
    • ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出
    • ¥100 matlab2009 32位一直初始化
    • ¥15 Expected type 'str | PathLike[str]…… bytes' instead
    • ¥15 三极管电路求解,已知电阻电压和三级关放大倍数