我试着编写一个方法,返回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;
}
答案 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
所述