-0 和+0 在内存里面分别怎么存储

[复制链接]
3724|10
 楼主| 醉心369 发表于 2014-2-13 10:55 | 显示全部楼层 |阅读模式
请各位大侠分析一下。我个人认为是一样的。
menfiss 发表于 2014-2-13 11:00 来自手机 | 显示全部楼层
零没有正负嘛?
zwk34 发表于 2014-2-13 11:05 | 显示全部楼层
这个问题太费神了
soso 发表于 2014-2-13 11:10 | 显示全部楼层
是这样的,计算机里表示数字用的都是补码不是原码。想知道补码是啥可以去百度一下。零在计算机里就是0,不存在正负一说。0和正数的补码都等于原码,也就是平时说的2进制数。负数的补码是符号位置一的情况下,对原码求反,再加一得到的。经过这样的变换,负数和正数运算的时候可以直接做加法,不需要根据符号位决定是做加法还是做减法。减法也可以改变有符号数的符号位,然后直接做加法。这样CPU就不需要专门做减法的电路了。
大道至简 发表于 2014-2-14 10:30 | 显示全部楼层
管这个干嘛?直接写xxx=0就好了
赤铸 发表于 2014-2-14 11:16 | 显示全部楼层
若采用反码,对于8-bit数据类型,-0“应该”是10000000(1是符号位,表示负数),+0“应该”是00000000
但如果我偏要把+0存成10000000,结果还不是一样?
计算机是应用数学,数学上都没有区别的,计算机里怎么会有区别?
主流的采用补码的系统里,不存在不同的编码。
ayb_ice 发表于 2014-2-14 13:31 | 显示全部楼层
就是0,不存在正负,或者说只有正0
msblast 发表于 2014-2-14 14:03 | 显示全部楼层
以char类型为例
对于正数原码、反码以及补码是其本身
+0
原码 00000000
反码 00000000
补码 00000000

负数的原码是其本身,反码是对原码除符号位之外的各位取反,补码则是反码加1
-0
原码 10000000
反码 11111111
补码 1 00000000
因为char类型只有8位,所以放弃最高位。由此可见,在计算机存储系统中+0 及 -0 的补码是一致的。即采用补码的方法,可以将+0 及 -0 统一表示,否则需要将+0 和-0 区别对待,增加运算复杂度。

上面是以char为例,换成short和int等,原理是一样的。可以亲自动手加深印象。
yewuyi 发表于 2014-2-14 14:49 | 显示全部楼层
没必要的讨论,直接写成0X00
yanzhuangsongqi 发表于 2014-2-14 16:40 | 显示全部楼层
不存在正负零吧
一般首席 发表于 2015-7-31 11:27 | 显示全部楼层
msblast 发表于 2014-2-14 14:03
以char类型为例
对于正数原码、反码以及补码是其本身
+0

回答的不错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

283

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部