利用 与非运算实现布尔代数中的与,或,非三种运算

728 阅读1分钟

实现与运算(&)

  考虑到与(&)运算的结果,目前能用到运算是与非(用这个代替!& ),对 !&结果再取一次!,应该就能得到与的结果了。 因此貌似我们需要一个非(!)操作,怎么通过 !& 来得到!呢,考虑到!&的结果:

  • 1 !& 1 = 0
  • 1 !& 0 = 1
  • 0 !& 1 = 1
  • 0 !& 0 = 1

要是实现取反操作,即把1变为0,把0变为1,只需要对原数 !& 1,就可以了。

   因此,要实现与运算,假设存在布尔数a,b: a & b = (a !& b) !& 1

实现非运算(&)

   假设存在布尔数a : !a = (a !& 1)

实现或运算

  考虑到或运算结果:

  • 1 | 1 = 0
  • 1 | 0 = 1
  • 0 | 1 = 1
  • 0 | 0 = 1
    这个结果和与的结果是相反的,所以只需要在我们实现的与运算的基础上,再加一个非运算就可以了。

  因此要实现或运算,假设存在布尔数a,b: a | b = ((a !& b) !& 1) !& 1