2011-03-28 54 views
0

我想得到相反数字的二进制数(表示x - > - (x)和 - (x) - > x)。二进制相反数

算法是什么?我想过将所有位(“1”改为“0”和“0”改为“1”),并将“1”添加到它。可以吗?

日Thnx

+1

你可以谷歌认为:http://www.math.grin.edu/~rebelsky/Courses/152/97F/Readings/student-binary#neg – 2011-03-28 20:28:22

回答

4

你的算法是补号正确:

-x = ~x + 1 

对于一个补,你会使用:

-x = ~x 

而对于符号 - 幅度号:

-x = x^(1 << n) 

其中n是单词中符号位的偏移量。我在此处使用C运算符表示法 - ^是按位异或运算符,而<<是左移位。

对于另一个数字表示形式,您需要使用其他操作。

+0

你能提供给我有更好的算法? thnx – Batman 2011-03-28 20:29:34

+0

@Adam D - 没有“更好的算法”。用任何合理的语言,你可以只写'-x',那为什么还要做其他事情呢? – 2011-03-28 20:31:54

+0

@Adam D更好的算法?这听起来像一个家庭作业... – 2011-03-28 20:32:03

3

这取决于表示负数的方式。你需要两个补码表示?你需要补码表示?

有关详情,请wikipedia

+0

其实它的MIPS汇编程序我写这篇文章将$ s0中的数字更改为相反,那么会更好? – Batman 2011-03-28 20:32:25

+0

为什么不简单地做$ s0 = 0 - $ s0。那么你不必担心负数的表现方式。不管你的处理器架构是什么,你都会确定你的结果是正确的。 – 2011-03-28 21:13:39