计算机中存储的是数的补码,但+0(表示0)与-0(表示-128)的补码是一样的,那怎么分辨是0还是-128?
4个回答
展开全部
补码是给定位数的。如果是8位的话,从00000000~11111111就是指0~128,-127~-1,所以带符号8位数是没有-128的。
纯手打,没问题请采纳,有问题请追问
纯手打,没问题请采纳,有问题请追问
追问
据我所知,10000000字符串就是表示-128,我所知道的跟你的有差别
追答
请你把补码的定义再看一遍,0只有唯一的表示。10000000如果表示0的话是叫做原码。如果只用8位,最小只能表示到-127,请理解。
如果非要找-128的补码,就只能加长长度,比如16位:111111111000000这样就可以了
展开全部
0原码是00000000
-0原码是10000000
0反码是00000000
-0反码是11111111
0补码是00000000
补码没有正0与负0之分
正数的反码、补码和其原码相同负数的反码是其原码除符号位外其他位取反负数的补码是取其反码后加1
-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
所以一般做这个区分是没有多少意义的,更多的是和你的环境和你的前提有关
通常越界都会造成异常的,当然如果你算好也行
就以C为例:
如果我的数据是short,那么它的范围是0~255或者是-127~127看有没有unsigned的符号
所以当我获取一个值是128时,那么这个数据是超出了short的约束范围
这时通常有二种选择
1. 承认这个越界,那么就用更大的数据类型来容纳它,那么它的值是128,数据类型为int
2. 不承认这个越界,强制该数据类型依然为short,那么它的值就是0
所以一般做这个区分是没有多少意义的,更多的是和你的环境和你的前提有关
通常越界都会造成异常的,当然如果你算好也行
追问
据我所知,10000000字符串就是表示-128,这并没有溢出,而00000000表示0,它们在计算机中同表示为00000000(补码)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算机中存储的,是数的补码。
数字,只有一个零,哪有+0 与-0?
数字零的补码,只有一个补码 0000 0000。
表示-128的补码,也是唯一的。
不存在任何分辨的问题。
数字,只有一个零,哪有+0 与-0?
数字零的补码,只有一个补码 0000 0000。
表示-128的补码,也是唯一的。
不存在任何分辨的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询