补码问题:为何取值范围负数比正数大1?

ScorpioZZR 2003-08-20 06:20:14
n位补码表示数的范围是: -2^(n-1)<=N<=2^(n-1)-1
比如16位的表数范围是:-32768~32767

为什么正数那里要减1?而不能是: -32768~32768这样呢?那个少掉的1用在哪里了?
...全文
846 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
W32API 2003-08-21
  • 打赏
  • 举报
回复
-32768~32768
那你的 0 要不要算一个数?
-32768~0~32767
原因看补码的定义
windows3000 2003-08-20
  • 打赏
  • 举报
回复
对于补码,表示负号的1兼有符号和数字的双重意义。
1000 0000,应是-128。
GhostAdz 2003-08-20
  • 打赏
  • 举报
回复
其实那是算出来的
正数最大比如8位的
那最大一定是01111111 是127对吧--------不可能再大了
负数开头一定是1对吧,所以最小的负数就是10000000
-128没错吧
8位范围就是-128--+127
人们为了平衡就把0做正数了









































nicememory 2003-08-20
  • 打赏
  • 举报
回复
少掉的1...
负数有32768个,正数32767个,还有个0

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧