求大神指导,为什么16位补码所表示的范围为-32768至32767,而不是我所推的-32767至32767?我的推导如下 5

 我来答
只为醍醐灌顶
2014-12-27 · TA获得超过132个赞
知道答主
回答量:104
采纳率:0%
帮助的人:110万
展开全部
因为补码不是这么来的,如果按你这样计算,00000000代表0,那么10000000代表什么呢,百度不让发网址,你要真想清楚点,加2280688068,给你发个网址看下我写的,反正就是说,补码的并不是简单的像你这样计算,因为当初程序员就是打算用你这种方法来编码的,清晰又明了,多好啊,可是会出现错误,没办法,后来就有了补码,当然你也可以追问
做而论道
高能答主

2014-12-29 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
位数太多,不便说明基本概念。

楼主用 4 位数,推导一下,应该是 -8~+7。

补码,是有严格的定义式的,参考:

http://zhidao.baidu.com/question/513374479.html
http://zhidao.baidu.com/question/294870512.html
追问
-8~+7如何推导呢?
追答
补码定义式:
[X]补 = X ; 0 <= X < 2^(n-1)
[X]补 = 2^n - |X| ; - 2^(n-1) <= X < 0

n = 4 时,变成:
[X]补 = X ; 0 <= X < 8   ,即 0~+7;
[X]补 = 16 - |X| ; - 8 <= X < 0  ,即 -8~-1。

综合,就是:-8~+7。
---------------------
看楼主的插图,你所求出的范围,是原码的表达范围。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式