数据结构中int的范围是如何得来的??

ddc120 2006-09-09 08:02:03
我是刚开始学习c语言,才半个月,但现在遇到了一个问题,那就是为何int的范围是-32768到32767,这个值是怎么算出来的???大家有没有可以解释这个问题的网站,介绍一下,在此特别感谢!!!
...全文
742 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
a_b_c_abc2 2006-09-10
  • 打赏
  • 举报
回复
这么说吧,TC中的int是16位,可以表示数据2^16=65536个,正数和负数一个一半各32768个,但正数有个0占了个位置,所以只能表示到32767(加上0还是32768个)

举个例子,用4bit表示有符号数,
正数有 0000(0) 0001(1) 0010(2) 0011(3) 0100(4) 0101(5) 0110(6) 0111(7)
负数有 1111(-1) 1110(-2) 1101(-3) 1100(-4) 1011(-5) 1010(-6) 1001(-7) 1000(-8)

负数是用相应正数的反码+1,再加上前面的符号位构成。
比如上面的例子:
10进制的-1用4bit表示为1111,第一位符号位,后面三位,1的编码001,取反为110,再加1为111,
10进制的-6用4bit表示为1010,第一位符号位,后面三位,6的编码110,取反为001,再加1为010,
10进制的-8用4bit表示为1000,是因为这是用4bit表示有符号数所能表示的最小的数,除了符号位1后面全为0,不能更小了。可以从-7减1得到-8。
Duwchy 2006-09-10
  • 打赏
  • 举报
回复
不同意楼上两位。
c中int的长度在不同系统下是不一样的,16位CPU下int的长度是16bit,32位CPU下int的长度是32bit,64位CPU下int的长度是64bit,楼主那个-32768到32767是从哪看到的哦?
==========================================

也不太同意这位的看法,还要看编译器环境的,我的CPU就是64位的,但visual studio 2005 下,int型还是 32 位的,哈;我想楼主的编译环境应该是在TC下的吧。
ddc120 2006-09-10
  • 打赏
  • 举报
回复
谢谢a_b_c_abc2(╰ _ ╯),我对你说的有了点思路了,你有没有专门介绍这方面的网站呢?我想具体的了解一下,我认为你说的是对的。别人如有不同的见解,可以发表自己的理解,谢谢!!!!!!
hyyyyyy 2006-09-10
  • 打赏
  • 举报
回复
根据不同的计算机 是不同的
a_b_c_abc2 2006-09-10
  • 打赏
  • 举报
回复
好象数学中,0既不是正数也不在负数。这里把它看做正数简便点。
fangshengwen 2006-09-09
  • 打赏
  • 举报
回复
2^15-1=32767
ddc120 2006-09-09
  • 打赏
  • 举报
回复
还是不明白,15位的结果不是2^15-1吗???像2进制数1111转换成10进制是2^4-1也就是7,不是吗??
jixingzhong 2006-09-09
  • 打赏
  • 举报
回复
数据范围,
考虑两个因素:

1 数据长度;
2 数据表示方式。

16位环境下(TC), int 是 2字节的,那么就是 16位,
除去一个符号位,
可以表示数据的是 15位;
int 是直接表示数据内容的,
那么就是 -2^15 ~ 2^15-1 ,也就是 -32768到32767
ddc120 2006-09-09
  • 打赏
  • 举报
回复
我没有学过计算机组成原理,不好意思了。我在书上看到int的范围是-32768到32767,书上默认的是16位的。但是16位除了一个符号位应该是15位而结果也应该是-(2^15-1)也就是-32767,可为什么会是-32768呢??我听老师说好像用的是什么补码类的算法,我不太清楚,有知道的在这里说一下,最好能清楚一些,让我们这些新手也了解一下。
i_noname 2006-09-09
  • 打赏
  • 举报
回复
不同意楼上两位。
c中int的长度在不同系统下是不一样的,16位CPU下int的长度是16bit,32位CPU下int的长度是32bit,64位CPU下int的长度是64bit,楼主那个-32768到32767是从哪看到的哦?
bombwang 2006-09-09
  • 打赏
  • 举报
回复
楼上的正解
Duwchy 2006-09-09
  • 打赏
  • 举报
回复
C的int类型为16位,1位符号位,所以范围时-2^15 ~ 2^15-1
晨星 2006-09-09
  • 打赏
  • 举报
回复
计算机组成原理没学过么?

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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