有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java初学者对按位操作数的解释

我目前正在学习编程入门课程。我们正在学习JavaSE(最终进入JavaEE)。我对大多数事情都有把握,但我用逐位操作和掩蔽撞到了墙上。例如:

此处编辑: 我想知道一个数字是否可以被3和5整除,但不能被2整除。唯一的要求是我不能使用%来找到答案,它必须在方法调用中,我必须使用掩码和按位操作数

我已经学会了如何判断一个数字是奇数还是偶数:

public static boolean isEven(int num) {
        return ((num & 1) == 0);
    }

我知道按位操作数是什么(&;、|、^、>;、<;)但不能真正正确地实施它们。我们的书也没有这方面的信息,它来自我们的老师笔记。 我不是在问答案,我需要了解它是如何工作的


共 (1) 个答案

  1. # 1 楼答案

    这些都是相当棘手的,除非你的教授真的向你展示了如何做这类事情。我做3个,你想办法做5个

    这是因为4==1模3

    static boolean isDivisibleBy3(int n)
    {
        while(n<0 || n>3) {
            n = (n&3) + (n>>2);
        }
        return (n==3 || n==0)
    }
    

    n&3获取较低的两位(n>>2)获取剩余的位并除以4。因为4==1 mod 3,所以除以4不会改变剩余的mod 3。然后我们把它们加在一起,得到一个更小的数字,其余数与我们开始的数字相同

    重复,直到我们得到一个小于4的数字。到那时,它不会变小

    有更快的方法可以做到这一点,但这种方法最容易理解