您的当前位置:首页正文

判断一个整数是否是奇数

来源:花图问答

使用位运算符,这样做的目的是为了节约内存开销和加快计算效率

关于位运算符的两个例子。

判断一个整数是否是奇数

public class MainDemo {

    public static void main(String[] args) {
        // 测试
        if (isOddNumber5(-7)) {
            System.out.println("奇数");
        } else {
            System.out.println("偶数");
        }
    }

    /**
     * 该解法没有考虑到负数
     * @param number
     * @return
     */
    public static Boolean isOddNumber(int number) {
        return number % 2 == 1;
    }

    /**
     * 把负数考虑进去
     * @param number
     * @return
     */
    public static Boolean isOddNumber2(int number) {
        return number % 2 == 1 || number % 2 == -1;
    }

    /**
     * 逆向思维
     * @param number
     * @return
     */
    public static Boolean isOddNumber3(int number) {
        return number % 2 != 0;
    }

    /**
     * 位运算符 移位
     * @param number
     * @return
     */
    public static Boolean isOddNumber4(int number) {
        return number >> 1 << 1 != number;
    }

    /**
     *  位运算符 与运算
     * @param number
     * @return
     */
    public static Boolean isOddNumber5(int number) {
        return (number & 1) == 1;
    }
}

请实现两个整数变量的交换

    public static void main(String[] args) {

        int a = 3;
        int b = 5;

        /**
         * 添加变量temp
         */
        System.out.println(a + " " + b);
        int temp = a;
        a = b;
        b = temp;
        System.out.println(a + " " + b);

        /**
         * 相加
         */
        System.out.println(a + " " + b);
        a = a + b;
        b = a - b;
        a = a - b;
        System.out.println(a + " " + b);

        /**
         * 位运算符,一个数据针对另一个数据位异或两次,该数不变
         */
        System.out.println(a + " " + b);
        a = a ^ b;
        b = a ^ b;
        a = a ^ b;
        System.out.println(a + " " + b);

        /**
         * 加法
         */
        System.out.println(a + " " + b);
        a = (a + b) - (b = a);
        System.out.println(a + " " + b);
    }