在没有模运算符的情况下在Java中测试偶数

时间:2012-12-08 21:17:31

标签: java syntax logic bit-manipulation

我如何用Java做到这一点?如果最后一位数是偶数,则查找数字是否可被2整除。 (0,2,4,6,8)示例:128是,129不是

7 个答案:

答案 0 :(得分:16)

使用按位操作and

if( (number&1) == 0)

按位AND运算符&

  

& (按位AND)运算符将其第一个操作数的每个位进行比较   第二个操作数的对应位。如果两个位都是1,那么   结果的相应位设置为1.否则,它设置为   相应的结果位为0(source)。

二进制格式中,偶数的最低有效位等于零。了解这一点并使用&操作员,你可以找出它是否是偶数。

因此,如果y为零,则需要一个数字..abcdy并与... 00001进行比较,而不是..abcdy& ..00001也是零,因此是偶数。

答案 1 :(得分:5)

通过使用按位运算符

查看最右边的位是否为1然后不是

执行逻辑和(例如)

yourNumber & 1

答案 2 :(得分:5)

检查最低有效位:

boolean even = (x & 1) == 0;

对于偶数,LSB为0,对于奇数,LSB为1,就像十进制数字一样,如果0可以分割,则最低有效数字为10

答案 3 :(得分:1)

if((n|1)==n)
  System.out.println("odd");
else
  System.out.println("even");

原因:如果LSB为1,则数字为奇数,否则为偶数。当n | 1完成时,奇数的LSB保持不变,因此得到的数字不会改变,而偶数的LSB变为1,从而改变数字。

答案 4 :(得分:0)

Myway;)

公共类Even_Odd {

/**
 * @param args
 */
public static void main(String[] args) 
{
    int val=550;
    // TODO Auto-generated method stub
    while(val>=0)
    {
        if(val==1)
        {
            System.out.println("Odd Number");
        }
        else if(val==0)
        {
            System.out.println("Even Number");
        }

            val=val-2;
        //  System.out.println(val);

    }
}

}

答案 5 :(得分:0)

将数字除以 2 并乘以答案 2 ,如果您得到原始数字,则数字“偶数”如果不是那么数字是“奇怪”

public class EvenOrOdd
{
    public static void main(String args[])
    {
        int value = 129;

        if((value/2)*2==value)
        {
            System.out.println("The Given Number \""+value+"\" is Even");
        }
        else
        {
            System.out.println("The Given Number \""+value+"\" is Odd");
        }
    }
}

答案 6 :(得分:0)

import java.io.*;
import java.util.*;
public class CheckNumber{
public static void main(String... args)throws IOException{

    BufferedReader br=new BufferedReader(new InputStreamReader(System.in));

    System.out.println("Please enter the number to check even or odd");

    int number=Integer.parseInt(br.readLine());

    String temp=number+""; //convert number to string

    char ch=temp.charAt(temp.length()-1); //get last character

    temp=ch+"";

    if(temp.equals("0") || temp.equals("2") || temp.equals("4") || temp.equals("6") || temp.equals("8")) //check last number is even
        System.out.println("Number is even");
    else
        System.out.println("Number is odd");
}

}