黑马程序员技术交流社区

标题: 计算机中为什么用补码存储数据呢? [打印本页]

作者: liuch111    时间: 2015-9-15 11:29
标题: 计算机中为什么用补码存储数据呢?
   用原码存储不好吗?
作者: boboyuwu    时间: 2015-9-15 11:37
用补码是为了参加运算的
作者: ...!!!    时间: 2015-9-15 14:23
计算机做运算时,是以补码进行运算的。
作者: 舒玉琛    时间: 2015-9-15 16:30
    跟着我写的你思考一下
    1 + 1  =  2 ;  这是最基础的运算
   那 1  -  1 是怎么运算的呢?
   1  -  1  =  1  +  (-1)  =   2  ;
  计算机就是这个思路,在计算机通过补码把减法变成了加法
  x补  -   y补    =   x补   +    -y补

作者: 大头爱傻瓜    时间: 2015-9-15 17:17
你的这个问题,珍惜不知道,其实正数的原码反码不码都一样的,只有负数不同,问题应该就在负数上
作者: a80C51    时间: 2015-9-15 18:04
综上,因为负数的存在,导致计算机无法判断是1 还是 -1 参与运算。
作者: spruce    时间: 2015-9-15 18:58
例子  十进制数6   以四位二进制数表示:
+6二进制原码表示为0110   
-6二进制原码表示为1110(负数情况下二进制最高位为1)
+0二进制原码表示为0000   
-0二进制原码表示为1000  
问题出现了,正负0表示不唯一,采用反码表示也会出现这个问题。采用补码则不会有问题
+0二进制补码表示为0000   
-0二进制补码表示为10000,最高位舍去不要,为0000,问题解决。孙鑫Java视频中有。

作者: spruce    时间: 2015-9-15 19:03
还有一个考虑是将减法转化为加法,参见4楼的解释
作者: zhangcheng0403    时间: 2015-9-15 20:51
保证数据的唯一性啊
作者: silencea    时间: 2015-9-15 21:13
这个你得给sun公司打电话问问




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2