Java中的二进制数最低有效
我试图写一个方法,返回0到255(包括0到255)之间任何数字的至少2个有效二进制数,它以十进制形式返回,显然我可以使用mod运算符%,但我不知道该怎么做,因为这个方法不能返回正确的2个最小sig。对于19,它应该返回3,因为最后2个有效值(11)在十进制中等于3Java中的二进制数最低有效,java,binary,Java,Binary,我试图写一个方法,返回0到255(包括0到255)之间任何数字的至少2个有效二进制数,它以十进制形式返回,显然我可以使用mod运算符%,但我不知道该怎么做,因为这个方法不能返回正确的2个最小sig。对于19,它应该返回3,因为最后2个有效值(11)在十进制中等于3 public static int getLeastSignificant2( int num ) { int first = num<<6 int finalD = first>>>
public static int getLeastSignificant2( int num )
{
int first = num<<6
int finalD = first>>>6;
return finalD;
}
public static int getLeastSignificant2(int num)
{
int first=num>6;
返回最终结果;
}
您应该能够将数字按位和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运算符,可以这样做。我认为编译器最终会将其转换为使用位and
public static int getLeastSignificant2(int num) {
int modResult = num % 4;
return modResult < 0 ? modResult + 4 : modResult;
}
public static int getLeastSignificant2(int num){
int modResult=num%4;
返回modResult<0?modResult+4:modResult;
}
编辑:修改为处理@dave_thompson_085所述的负数是否有其他方法在不使用二进制文字的情况下处理负数?就像我想知道如何使用mod运算符%一样,因为他们告诉我使用它作为提示。非常感谢您的帮助。注意
n%powerof2
不是负值的低位(至少对于Java要求的两位补表示);对于这个Q(限制为0:255),这不是问题,但在其他情况下也可能是问题。对于这个问题,并且代码在当前形式下没有意义,我建议您重写它。