免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2475 | 回复: 18
打印 上一主题 下一主题

-0 == 0 的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-19 17:19 |只看该作者 |倒序浏览
为什么,难道不比较符号位了吗

论坛徽章:
0
2 [报告]
发表于 2006-12-19 17:20 |只看该作者
补码下面0和-0一样的。

论坛徽章:
0
3 [报告]
发表于 2006-12-19 17:23 |只看该作者
-0 在数学上是什么含义?

论坛徽章:
0
4 [报告]
发表于 2006-12-19 17:26 |只看该作者
你是说在做比较之前,先取反吗 ~(-0) == ~(0)

论坛徽章:
0
5 [报告]
发表于 2006-12-19 17:28 |只看该作者
原帖由 kys2002 于 2006-12-19 17:26 发表
你是说在做比较之前,先取反吗 ~(-0) == ~(0)



不是, 2楼说的补码是指数字在计算机中的存储形式.
负数是按照补码存储的.

论坛徽章:
0
6 [报告]
发表于 2006-12-19 17:33 |只看该作者
我已经搞明白了,在比较之前,先计算-0的值
-0 == ~(0-1)
~(-1) == 0

ok

[ 本帖最后由 kys2002 于 2006-12-19 17:36 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2006-12-19 18:34 |只看该作者
原帖由 kys2002 于 2006-12-19 17:33 发表
我已经搞明白了,在比较之前,先计算-0的值
-0 == ~(0-1)
~(-1) == 0

ok


不能说明问题哈。
对于有符号数,0取反码就是-1。
所以你上面的代码是个恒等式。
如果我没有记错的话,0和-0对于整数来说是一样的,但对于浮点数不一样。

通常对于整数的0,只有有符号0和无符号的0有意义。因为前者取反码是负数,后者取反码是大正数。

论坛徽章:
0
8 [报告]
发表于 2006-12-19 18:42 |只看该作者
原帖由 kys2002 于 2006-12-19 17:19 发表
为什么,难道不比较符号位了吗


-0按照取负的操作是这样的。假如这里默认是0是8位的。
1.~0 = 11111111 取反
2.-0 = 11111111 + 1 加1取补
3.-0 = 100000000
4.由于只有8位存储空间,溢出后高位被丢弃,所以结果仍是0

[ 本帖最后由 zx_wing 于 2006-12-19 18:44 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2006-12-19 19:21 |只看该作者
偶明白了~谢谢ZX~

论坛徽章:
0
10 [报告]
发表于 2006-12-20 16:26 |只看该作者
原帖由 emacsnw 于 2006-12-19 17:20 发表
补码下面0和-0一样的。

??难道不是没有-0吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP