ACC 发表于 2012-8-30 08:26:27

求大神解释计算机如何区分一个二进制数是正数还是负数

有符号二进制数第一位表示正负,但是计算机通过什么机制来识别他是一个正数还是负数,是通过硬件完成,还是程序员通过软件来实现,求大神帮助啊~~

ACC 发表于 2012-8-30 08:54:05

大神们求解答啊~~

姑苏 发表于 2012-8-30 10:25:46

路人飘过……

ACC 发表于 2012-8-31 14:49:36

众多大神难道就不能解决这么个小小的问题么,求解答啊~~

追忆_、流年 发表于 2012-8-31 15:23:17

硬件完成的,有一个标志寄存器, 计算机很多东西 都是靠标志寄存器区分的 像正负、大小、还有很多判断

ACC 发表于 2012-8-31 21:55:16

追忆_、流年 发表于 2012-8-31 15:23 static/image/common/back.gif
硬件完成的,有一个标志寄存器, 计算机很多东西 都是靠标志寄存器区分的 像正负、大小、还有很多判断

你说的是符号标志寄存器吧,但是他是用来存放运算结果的啊,在开始运算的时候计算机是如何识别的呢

Seandor 发表于 2012-9-1 00:04:47

一个二进制数既可以当做有符号数亦可当做无符号数来运算,不管我们如何看待,计算机在执行比如add指令时,就已经包含了两种含义,也将得到同一信息记录的两种结果。关键在于我们的程序需要哪一种结果。
去看看补码你就明白了。

Seandor 发表于 2012-9-1 00:05:44

by the way, I am NOT 大神!!!

ACC 发表于 2012-9-1 21:19:45

Seandor 发表于 2012-9-1 00:05 static/image/common/back.gif
by the way, I am NOT 大神!!!

小弟对计算机内部运行机制了解甚少,感谢“ NOT 大神”的指导,o(∩_∩)o

001 发表于 2012-9-3 18:30:50

不过,楼主是男孩子吧,咋在美眉求助区发帖啊?有点~

ACC 发表于 2012-9-4 06:45:10

001 发表于 2012-9-3 18:30 static/image/common/back.gif
不过,楼主是男孩子吧,咋在美眉求助区发帖啊?有点~

初来乍到,只发现这一个求助区,不过人多啊,噱头高啊,哈哈

楚门 发表于 2012-9-6 09:08:34

首先你必须明白,计算机内部在表示数据时都是用补码形式(以前也有那种用反码来表示数据的机器,但现在的机器几乎都是以补码表示数据),关键是计算机本身是不区正数、负数!它仅仅知道那是一堆二进制,对于算术指令,都是通过位级的操作(左移,逻辑右移,算术右移)来实现的,为什么要用补码呢?因为补码既可以表示正数,也可以表示负数,而且在操作有符号数和无符号数时,底层位级别的实现都是相同的,这需要数学公式的推导,在这里我就不说了,再回到你的问题:计算机仅仅知道那是一堆二进制,你的程序告诉计算机要把它解析为一个有符号数,那计算机就按照有符号数的编码方式来解析,无符号数就按照无符号数的编码方式来解析,浮点数就按照浮点数的编码方式来解析。另外我们在汇编中从来没有遇到过这种问题吧!这也就印证了用补码表示数据时,对于有符号数或者无符号数,底层的位级操作是一样的,也说明了,这是高级语言对底层语言的一种封装!

ACC 发表于 2012-9-7 06:24:23

楚门 发表于 2012-9-6 09:08 static/image/common/back.gif
首先你必须明白,计算机内部在表示数据时都是用补码形式(以前也有那种用反码来表示数据的机器,但现在的机 ...

经典,非常感谢!!
页: [1]
查看完整版本: 求大神解释计算机如何区分一个二进制数是正数还是负数