一个貌似先有鸡还是先有蛋的问题

左岸fans 2009-03-12 02:58:45
菜鸟正在温习C,一个貌似先有鸡还是先有蛋的?难住了俺---------为什么一个整型变量只能容纳-32768到32767?
...全文
156 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
左岸fans 2009-03-19
  • 打赏
  • 举报
回复
老早在学校用的书,谢啦各位
coanororc 2009-03-17
  • 打赏
  • 举报
回复
历史原因...
lqandlq 2009-03-17
  • 打赏
  • 举报
回复
就是2进制值所能表达的最大和最小数。。第一位是符号位。。
建议楼主看看2进制就明白了
mare 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用楼主 piaoliudao30 的帖子:]
菜鸟正在温习C,一个貌似先有鸡还是先有蛋的?难住了俺---------为什么一个整型变量只能容纳-32768到32767?
[/Quote]

很久以前,硬件资源是很珍贵的,1K内存要卖1000块,
时至今天,对某些硬件系统来说,资源依然珍贵,
总的编程空间也许只有4-16K,
标准C的int型一直都是占2个字节的,它的意思只是声明一个占2个字节的变量空间,
而里面要放些什么是你自己的问题,
当它是个无符号数的时候,它的取值范围是2的16次方,
当它是个有符号数的时候,由于要放个0,所以是-32768到32767。

但具体到编译器,针对不同的硬件平台,int型有些时候会占4个字节或8个字节,取值范围
是2的32次方到2的64次方。这完全是一种根据实际需要而约定的问题。
没有什么蛋不蛋的,你是芯片厂家,并且觉得标准不合理,你完全可以写个编译器出来,
并规定int型代表1个字节或64个字节。在允许分拆空间的情况下,它跟总线的带宽无关。



ForestDB 2009-03-16
  • 打赏
  • 举报
回复
这跟鸡蛋有什么关系?
另外现在基本上都是32位的系统了。
cnStreamlet 2009-03-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 piaoliudao30 的帖子:]
菜鸟正在温习C,一个貌似先有鸡还是先有蛋的?难住了俺---------为什么一个整型变量只能容纳-32768到32767?
[/Quote]

因为它只占2字节(针对LZ的int),只有16 bit,只能表示 2^16 种不同的状态
magipan 2009-03-15
  • 打赏
  • 举报
回复
那是以前用16位二进制表示一个有符号整型数的,所以除了最高位的符号位,只有15位表示数字,就是说最大正数为0111 1111 1111 1111=32767,至于负数,用补码可以表示到-32768
diannaomingong 2009-03-12
  • 打赏
  • 举报
回复
为什么存储容量总是256,32768,65536....这些数字?
软件是要硬件支持实现的
对于2进制芯片来说,若干个单位,n位,最大也就能存储2的n次方
arong1234 2009-03-12
  • 打赏
  • 举报
回复
这有什么矛盾的?
首先楼主要换书了,现在没有什么int还是再这个范围了,最少的也是21亿了
至于为什么,建议楼主学习一下补码的知识
pengzhixi 2009-03-12
  • 打赏
  • 举报
回复
扯不上关系吧
  • 打赏
  • 举报
回复
2^15-1需要为什么吗?

70,022

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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