为什么没有任何编程语言支持按位加法和按位减法

时间:2015-04-04 15:46:38

标签: bit-manipulation programming-languages

1)当已经为按位加法和按位减法定义了逻辑时,为什么没有任何编程语言(据我所知)为这些操作提供支持。 2)为什么它们只为按位AND,OR,Ex或等操作提供支持。

1 个答案:

答案 0 :(得分:1)

逐位加法,即将每个位与另一个操作数的相应位相加而在位之间没有进位(或者,模2 ^ 1),只是xor,在大多数语言中都可用。

按位减法没什么意义。我从未听说过它,也找不到任何有意义的定义。您首先必须选择如何表示负数,但是:

  • 在两个补码~0 + 1 = 0~1 + 1 = 1中,01都是0,因为它们是自己的逆。还有其他奇怪之处。
  • 符号幅度不会为幅度留下任何位,因此您只有正零和负零。我不清楚算术应该如何在那里工作以及它是否有用。
  • 您只能将值为1和0,或者为负1和0的值分配给位0和1.如果选择第一个,并为您的操作写#,则可以正常回绕{{ 1}}再次只是xor。在另一种情况下,0 # 0 = 0, 0 # 1 = 1, 1 # 0, 1 # 1 = 0 ......再次,......所以唯一有意义的定义相当于按位加法。

此外,Bitwise不是按位和/或是一个完整的布尔运算符系统,所以无论你想象“按位减法”的按位运算,你都可以轻松地实现它。