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


    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了。