2012-12-08 11 views
8

Javaでこれをどうすればできますか?最後の桁が偶数の場合、数値が2で割り切れるかどうかを調べます。 (0,2,4,6,8)例:128 129は、最も右のビットは、ビット演算子をモジュロ演算子を使用しないJavaの偶数番号のテスト

論理実行し(用とを用いることにより、1、そのていないかどうかを確認

+1

@AV。'%を使用して回答を見つけることはできません。 ' - >タイトル。 –

+0

より最適なビットテスト(ケース2の場合)の他に、整数除算も(2以外の場合は) 'n ==(n/2)* 2'となります。 –

+3

そして*なぜ*モジュロ演算子を避けたいですか?まず第一に、コードは読みやすく、プログラマーの* intent *を記述する必要があるので、 'a%2 == 0'は' a&1 == 0 'よりも表現力があります。バイナリ表現。 – Heinzi

答えて

5

ないが、あります例)

yourNumber & 1 
5

は最下位ビットをチェックしてください:

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

はLSBだけ小数少なくともsignifiのためのように、偶数と奇数のため1ため0です数字がで割り切れる場合は、数字は0です。

14

は&(ビット単位のAND)演算子は、第二の対応するビットを するために、その最初のオペランドの各ビットを比較し、ビット演算and

if((number&1) == 0) 

ビット単位のAND演算子&

を使用しますオペランド。両方のビットが1の場合、結果の対応するビットは に設定されます。そうでない場合、 の対応する結果ビットが0(source)に設定されます。 バイナリ形式偶数で

はゼロに等しい最下位ビットを有しています。これを知って、&演算子を使って、それが偶数であるかどうかを調べることができます。

したがって、数値が..abcdyで、yが.abcdyよりもゼロの場合は.00001と比較されます。& ..00001もゼロで偶数です。

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

Thats cool ..しかし、あなたが15〜20桁の数字を持つ場合、whileループが何回実行されますか? Perfomanceは吸う。まずは学ぶのが難しいが、より良いやり方を学ぶべきだ。あなただけでなく、一般的にはprogramme.rとして – Stunner

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

理由:LSBが1であり、さらにそれ以外の場合は場合の数が奇数です。 n | 1が実行されると、奇数のLSBは同じままであり、結果の数は変更されず、偶数のLSBは1になり、番号が変更されます。

0
によって

分割数を、あなたの元の数を取得する場合、答えを掛け、その後数は「でも」ない場合は、その後数は「奇数」

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

}