有符号字符型取值范围为什么是-128-127? 10

127我知道,但负数时是111111111是-2^8+……+1=127,怎么是-128,怎么多了一位呀... 127我知道,但负数时是111111111是-2^8+……+1=127,怎么是-128,怎么多了一位呀 展开
 我来答
仁昌爱娱乐
高粉答主

2020-01-19 · 专注关心娱乐
仁昌爱娱乐
采纳数:760 获赞数:460167

向TA提问 私信TA
展开全部

有符号字符型取值范围是-128-127是因为有符号字符型最高位是符号位,0代表正数;1代表负数。有符号字符型的最大值为01111111,这个二进制值等于2^0+2^1+2^2+2^3+2^4+2^5+2^6=127。

同时在计算机中,数值是以补码形式存储的。正数的补码是其本身;而负数的补码是取反(符号位保持不变),再加1。所以有符号字符型的最小值是10000000 ->(取反) 11111111 ->(加1)10000000=-2^8=-128。

扩展资料:

有符号数的编码方式,常用的是补码,另外还有原码和反码等。用不同二进制编码方式表示有符号数时,所得到的机器数可能不一样,但是真值是相同的。

在n位的机器数中,最高位为符号位,该位为零表示为正,为一表示为负;其余n-1位为数值位,各位的值可为零或一。当真值为正时,原码、反码、补码数值位完全相同;当真值为负时,原码的数值位保持原样,反码的数值位是原码数值位的各位取反,补码则是反码的最低位加一。

adsjing
2014-05-10 · TA获得超过563个赞
知道小有建树答主
回答量:299
采纳率:100%
帮助的人:119万
展开全部
范围是 -128至127.
根据补码的几条规定即可推出上述结论:
1 若二进制每位全为0,则表示数0
2 若最高位(即符号位)为0,表示正数
3 若最高位为1, 表示是负数,而该负数的绝对值是多少呢?将每个二进制位(包括符号位)取反加1,得到一个二进制数,将该数看成无符号数,其值就是上述负数的绝对值。

例如,二进制的 10000000 的最高位为1, 所以它表示的是负数。是负的多少呢?我们将其八位全部取反,得到01111111, 然后加1,得到10000000. 将该数看作无符号数,值为128, 故计算机中的10000000表示的是-128

最高位(即符号位)为1的8位有符号数有128个,故可表示128个负数;最高位为0的8位有符号数有128个,但全0的那个表示数0,所以总共只能表示127个正整数。
转载自http://hi.baidu.com/yyvzaxnwshlrvzr/item/d80d91f7ec2a5558c8f337d9
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
XHHISEA02274
推荐于2017-10-06 · TA获得超过8万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:4716万
展开全部
根据补码的几条规定即可推出上述结论:
1 若二进制每位全为0,则表示数0
2
若最高位(即符号位)为0,表示正数
3 若最高位为1,
表示是负数,而该负数的绝对值是多少呢?将每个二进制位(包括符号位)取反加1,得到一个二进制数,将该数看成无符号数,其值就是上述负数的绝对值。

例如,二进制的 10000000 的最高位为1, 所以它表示的是负数。是负的多少呢?我们将其八位全部取反,得到01111111,
然后加1,得到10000000. 将该数看作无符号数,值为128, 故计算机中的10000000表示的是-128

最高位(即符号位)为1的8位有符号数有128个,故可表示128个负数;最高位为0的8位有符号数有128个,但全0的那个表示数0,所以总共只能表示127个正整数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式