modulo
运算符Java, Check if integer is multiple of a number
我想知道是否有办法不使用division
或modulo
运算符。
这是我试图在线解决的面试问题的一部分
答案 0 :(得分:6)
回想一下偶数的二进制表示将最低有效位设置为零。现在解决方案很简单:使用按位AND使用1
屏蔽最后一位,并将结果与零进行比较。如果你得到零,那么数字是均匀的;不然,这很奇怪。
boolean isEven(int a) {
return (a & 1) == 0;
}
执行a & 1
时,得到的结果为1或0,具体取决于最后一位的值。对此的术语是“#34; bit masking"”在这种情况下,1
用作位掩码。
答案 1 :(得分:3)
int i = 5; if ((i & 0x1) == 0) { System.out.println("It's a multiple of 2"); } else { System.out.println("It's NOT a multiple of 2"); }
答案 2 :(得分:0)
你也可以使用移位,向右移一位并向后移,这也相当于除以2并向后移2
boolean isEven(int val){
if(((val>>1)<<1) == val){
return true;
}
}
答案 3 :(得分:0)
一种简单的方法就是,
int no=5;
String str=""+no;
if((str.length()-1).equals("2")||(str.length()-1).equals("4")||(str.length()-1).equals("6")||(str.length()-1).equals("8")||(str.length()-1).equals("0")||)
System.out.println("Yes");
System.out.println("No");
就这么简单。希望它有所帮助。