我知道我可以通过移位和添加二进制数来执行乘法运算。但是我想知道我是否也可以减去使用减号。
我能达到的最接近的方法是y +(~x + 1)。但是我不知道它是否正确,还有其他方法吗?
答案 0 :(得分:0)
您所指的方法是一种表示二进制中负数的方法,称为二进制补码。通过反转所有位并添加一位来找到这两个补码。例如,
7 - 5 = 2
0111 - 0101 = 0010
0111 + 1011 = 1 0010
额外的一个是随身携带。
还有一种使用补码的方法,其中位被简单地反转,但这样做的缺点是可能产生负0。
这是减法可以在硬件中实现的方式。