How to calculate if a given host is in the same subnet as another

Variables: IPA Address of Host A TMP temporary variable
NMA Netmask of Host A CGU Result
IPB Address of Host B If zero: Hosts are in same subnet
NMB Netmask of Host B If not zero: Hosts are not in same subnet
Operations:
Host A Host B
TMP = IPA xor IPB TMP = IPA xor IPB
CGU = TMP and NMA CGU = TMP and NMB
"xor" and "and" are binary operations that mask one binary number with another
Xor: Sets all positions to "1" that are different in the two numbers and all positions to "0" that are equal.
Example: 0101 xor 0011 = 0110
And: Sets all positions to "0" in the two numbers except for those where both are "1"
Example: 0101 and 0011 = 0001
Examples
Host A Host B
IPA 192.168.1.1 (=10000000.10101000.00000001.00000001) IPB 192.168.1.2 (=10000000.10101000.00000001.00000010)
NMA 255.255.255.0 (=11111111.11111111.11111111.00000000) NMB 255.255.255.0 (=11111111.11111111.11111111.00000000)
TMP = IPA xor IPB
= 192.168.1.1 xor 192.168.1.2 = 0.0.0.3 (=00000000.00000000.00000000.00000011)
CGU = TMP and NMA = 0.0.0.3 and 255.255.255.0 = 0.0.0.0
The hosts are in the same subnet
IPA 192.168.1.1 IPB 192.168.5.2
NMA 255.255.255.0 NMB 255.255.255.0
TMP = IPA xor IPB
= 192.168.1.1 xor 192.168.5.2 = 0.0.4.3
CGU = TMP and NMA = 0.0.4.3 and 255.255.255.0 = 0.0.4.0
The hosts are not in the same subnet
IPA 192.168.1.1 IPB 192.168.5.2
NMA 255.255.0.0 NMB 255.255.255.0
TMP = IPA xor IPB TMP = IPA xor IPB
= 192.168.1.1 xor 192.168.5.2 = 0.0.4.3 = 192.168.1.1 xor 192.168.5.2 = 0.0.4.3
CGU = TMP and NMA = 0.0.4.3 and 255.255.0.0 = 0.0.0.0 CGU = TMP and NMB = 0.0.4.3 and 255.255.255.0 = 0.0.4.0
For Host A, the hosts are in the same subnet For Host B, the hosts are not in the same subnet