✖️

Power Apps で排他的論理和を実現する方法

2024/12/03に公開

はじめに

Power Apps には論理積 (And) ・論理和 (Or) ・否定 (Not) 演算子または関数がありますが、排他的論理和 (Xor) 演算子または関数はありません。本記事は Power Apps で排他的論理和を実現する方法を説明します。

コンテキスト

  • Power Apps キャンバスアプリ
  • Power Fx を有効にしたデスクトップフロー

対象読者(前提知識)

  • Power Apps でキャンバスアプリを作成できる方
  • Power Fx を有効化したデスクトップフローを作成できる方

And, Or, Not を組み合わせて Xor を実現する

はじめに And, Or, Not を組み合わせて Xor を実現する方法を説明します。XorAnd, Or, Not を組み合わせて次のように表されます。

Xor を実現する式

<関数表記>

Or(And(Not(x), y), And(x, Not(y)))

<Visual Basic 演算子表記>

Not x And y Or x And Not y

<JavaScript 演算子表記>

!x && y || x && !y

<参考文献>
And、Or、および Not 関数

真理値表

真理値表を書くと次のようになります。排他的論理和が実現できていることが確認できます。

x y Not x Not y Not x And y x And Not y Not x And y Or x And Not y
false false true true false false false
false true true false true false true
true false false true false true true
true true false false false false false

Boolean, Mod, true=1, false=0 を組み合わせて Xor を実現する

次に Boolean 関数、Mod 関数と true=1false=0という性質を組み合わせて Xor を実現します。次の関数は Xor と等しくなります。

Xor を実現する式

Boolean(Mod(x + y, 2))

この関数について説明するために、Boolean 関数、Mod 関数、 true=1, false=0という性質についてそれぞれ説明します。

Boolean 関数

はじめに Boolean 関数について説明します。Boolena 関数はテキストや数値をブール値に変換する関数です。ここでは、数値の変換規則のみ示します。

x Boolean(x)
0 false
0 以外 true

<参考文献>
Boolean 関数

Mod 関数

次に Mod 関数について説明します。Mod 関数は x / y を整数の範囲で求めたときの余りを計算する関数です。例えば Mod(x, 2) は次のようになります。

x Mod(x, 2) x = 2 * Int(x / 2) + Mod(x, 2)
0 0 0 = 2 * 0 + 0
1 1 1 = 2 * 0 + 1
2 0 2 = 2 * 1 + 0
3 1 3 = 2 * 1 + 1
4 0 4 = 2 * 2 + 0
5 1 5 = 2 * 2 + 1

<参考文献>
Mod 関数

true=1, false=0

最後に true=1, false=0 という性質について説明します。Power Apps ではブール値 true, false は数値として解釈することができ、それぞれ 1, 0 となります。以下に簡単な証明を示します。

true=1 であることの証明>

1 * true = 1 です。従って true = 1 です。

false=0 であることの証明>

1 + false = 1 です。従って false = 0 です。

真理値表

真理値表を書くと次のようになります。ここでも排他的論理和が実現できていることが確認できます。

x y x + y Mod(x + y, 2) Boolean(Mod(x + y, 2))
false=0 false=0 0 0 false
false=0 true=1 1 1 true
true=1 false=0 1 1 true
true=1 true=1 2 0 false

Discussion