实现与运算(&)
考虑到与(&)运算的结果,目前能用到运算是与非(用这个代替!& ),对 !&结果再取一次!,应该就能得到与的结果了。 因此貌似我们需要一个非(!)操作,怎么通过 !& 来得到!呢,考虑到!&的结果:
1 !& 1 = 01 !& 0 = 10 !& 1 = 10 !& 0 = 1
要是实现取反操作,即把1变为0,把0变为1,只需要对原数 !& 1,就可以了。
因此,要实现与运算,假设存在布尔数a,b: a & b = (a !& b) !& 1
实现非运算(&)
假设存在布尔数a : !a = (a !& 1)
实现或运算
考虑到或运算结果:
1 | 1 = 01 | 0 = 10 | 1 = 10 | 0 = 1
这个结果和与的结果是相反的,所以只需要在我们实现的与运算的基础上,再加一个非运算就可以了。
因此要实现或运算,假设存在布尔数a,b: a | b = ((a !& b) !& 1) !& 1