计算机中存储的是数的补码,但+0(表示0)与-0(表示-128)的补码是一样的,那怎么分辨是0还是-128?

 我来答
洛谷科技
2012-12-08 · TA获得超过363个赞
知道答主
回答量:51
采纳率:0%
帮助的人:31.9万
展开全部
补码是给定位数的。如果是8位的话,从00000000~11111111就是指0~128,-127~-1,所以带符号8位数是没有-128的。
纯手打,没问题请采纳,有问题请追问
追问
据我所知,10000000字符串就是表示-128,我所知道的跟你的有差别
追答
请你把补码的定义再看一遍,0只有唯一的表示。10000000如果表示0的话是叫做原码。如果只用8位,最小只能表示到-127,请理解。
如果非要找-128的补码,就只能加长长度,比如16位:111111111000000这样就可以了
坐看云起时QMl
2012-12-08 · TA获得超过1621个赞
知道小有建树答主
回答量:299
采纳率:100%
帮助的人:215万
展开全部
0原码是00000000
-0原码是10000000

0反码是00000000
-0反码是11111111

0补码是00000000
补码没有正0与负0之分
正数的反码、补码和其原码相同负数的反码是其原码除符号位外其他位取反负数的补码是取其反码后加1

参考资料: 百度百科

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-12-08
展开全部
区别0和128要看是什么环境的
就以C为例:
如果我的数据是short,那么它的范围是0~255或者是-127~127看有没有unsigned的符号
所以当我获取一个值是128时,那么这个数据是超出了short的约束范围
这时通常有二种选择
1. 承认这个越界,那么就用更大的数据类型来容纳它,那么它的值是128,数据类型为int
2. 不承认这个越界,强制该数据类型依然为short,那么它的值就是0
所以一般做这个区分是没有多少意义的,更多的是和你的环境和你的前提有关
通常越界都会造成异常的,当然如果你算好也行
追问
据我所知,10000000字符串就是表示-128,这并没有溢出,而00000000表示0,它们在计算机中同表示为00000000(补码)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沙里波特
2021-10-21 · TA获得超过5238个赞
知道大有可为答主
回答量:1.1万
采纳率:100%
帮助的人:605万
展开全部
计算机中存储的,是数的补码。
数字,只有一个零,哪有+0 与-0?
数字零的补码,只有一个补码 0000 0000。
表示-128的补码,也是唯一的。
不存在任何分辨的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式