Java中的二进制数最不重要

时间:2016-11-12 02:21:30

标签: java binary

我试着编写一个方法,返回0到255之间的任意数字的最少2个有效二进制数,包括十进制,显然我可以使用mod运算符%但我不知道该怎么做因为与这个方法它不会给我正确的2个最小的信号。对于19,它应该返回3,因为最后2个有效(11)等于3的十进制

public static int getLeastSignificant2( int num )

{

    int first = num<<6

    int finalD = first>>>6;

    return finalD; 
}

1 个答案:

答案 0 :(得分:3)

你应该能够按位和数字3(二进制11)。除了2个最低有效位之外,这将使所有其他位清零。

public static int getLeastSignificant2(int num) {
    // return num & 3; // if you don't want to use a binary literal
    return num & 0b11;
}

我得到System.out.println(getLeastSignificant2(19)); //=> 3

如果你想使用mod运算符可以做到这一点。我认为编译器最终转换为使用按位和引擎盖。

public static int getLeastSignificant2(int num) {
    int modResult = num % 4;
    return modResult < 0 ? modResult + 4 : modResult;
}

编辑:修改为处理负数,如@ dave_thompson_085

所述