在Java中测试偶数而不使用模运算符

问题描述 投票:0回答:8

我将如何在 Java 中执行此操作?判断一个数是否能被 2 整除,最后一位数字是否为偶数。 (0,2,4,6,8) 示例:128 是,129 不是

java syntax logic bit-manipulation
8个回答
16
投票

使用按位运算

and

if( (number&1) == 0)

按位与运算符 &

&(按位与)运算符将其第一个操作数的每一位与 第二个操作数的相应位。如果两位都是 1,则 结果的相应位设置为 1。否则,设置 相应的结果位为 0()。

二进制格式中,偶数的最低有效位等于零。知道这一点并使用 & 运算符,您可以找出它是否为偶数。

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


6
投票

使用按位运算符查看最右边的位是否为 1 则不是

执行逻辑与(例如)

yourNumber & 1

6
投票

检查最低有效位:

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

LSB 对于偶数为

0
,对于奇数为
1
,就像十进制数一样,如果可被
0
整除,则最低有效位为
10


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

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


0
投票

我的方式;)

公共类 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);

    }
}

}


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");
        }
    }
}

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");
}

}


0
投票
Scanner sc =new Scanner(System.in);

int num=sc.nextInt();
int rem=0;

boolean result=(rem==0);

if (result==true) {
    System.out.println("Even");
} else {
    System.out.println("Odd");
}
© www.soinside.com 2019 - 2024. All rights reserved.