[ Java ] 2つの数の符号(±)の一致判定(排他的論理和とMath.signum)

Pocket

ここでは、2つの数のプラスマイナスの符号が同じであるかを確認するサンプルコードを掲載しています。

スポンサーリンク

2つの数の符号の一致判定(排他的論理和)

排他的論理和の演算を行って、2つの数の符号が一致しているかを判定するサンプルプログラムです。詳細はサンプル内のコメントも参照ください。

long x1 = 5;
long x2 = -5;

long xor = x1 ^ x2; // -2:排他的論理和を取得

x1 = 10;
x2 = 3;

xor = x1 ^ x2; // 9:排他的論理和を取得

x1 = 0;
x2 = -13;

xor = x1 ^ x2; // -13:排他的論理和を取得

x1 = -8;
x2 = -1;

xor = x1 ^ x2; // 7:排他的論理和を取得

// 以下、2つの数の符号が同じか判定するコード
// 2つの数の排他的論理和が0以上であれば符号が一致していると判定する(ゼロ同士は符号が同じとする)
if((x1 ^ x2) >= 0) {
    // 符号が同じ
} else {
    // 符号が違う
}

Math.signum を使って数の符号を判定する

Math.signum メソッドを使用して符号そのものを取得することもできます。以下、そのサンプルコードです。

long x0 = 0;   // 0
long x1 = -8;  // 負数
long x2 = 89;  // 正数

// 0の場合は0がリターンされる
float sig0 = Math.signum(x0); // 0.0
// 負数の場合は-1がリターンされる
float sig1 = Math.signum(x1); // -1.0
// 正数の場合は1.0がリターンされる
float sig2 = Math.signum(x2); // 1.0

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *