社区
C++ 语言
帖子详情
为什么int型的范围是-32768~32767?这个范围是这么得出来的?
anison
2007-10-21 12:23:50
不少书讲这个问题时不很透彻..
到现在我还一直一知半解的..
只知道int是16位有符号数,怎么得出其表示的范围???
个人的理解:首先看正数,符号为为0,那么最大数的原码应该是:0111,1111,1111,1111即32767
同理最小的负数应该是-32767....
那为什么最小的负数是-32768??怎么得出来的?
谢谢大家
...全文
11219
24
打赏
收藏
为什么int型的范围是-32768~32767?这个范围是这么得出来的?
不少书讲这个问题时不很透彻.. 到现在我还一直一知半解的.. 只知道int是16位有符号数,怎么得出其表示的范围??? 个人的理解:首先看正数,符号为为0,那么最大数的原码应该是:0111,1111,1111,1111即32767 同理最小的负数应该是-32767.... 那为什么最小的负数是-32768??怎么得出来的? 谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
24 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
上海伯环自动化
2010-07-01
打赏
举报
回复
11楼说的最清楚了
nuoyantaizi
2008-10-15
打赏
举报
回复
1
朋友,你这个问题我了探讨过,现在我给你说一下,可能不太清楚,你好好看.
int型规定只能存放16位的数据,而且是以补码形式存放的.这点我们先不看,我们看16位能放多大的数:11111111,11111111.这是16位二进制最大的数.那么它的反码和补码是一样的(正数的正反码一样.)但是,它的最高位是1被系统认为是负数,所以最高位应该是0.那么int型最大的数就是:01111111,11111111.就是2的15次方减1,这个你该懂吧?
看负数.我们来看int型最小的负数(二进制原码):-11111111,11111111对不对?前面的减号是我本人要告诉你这个数是负数.它的补码是:先,取反:00000000,00000000.再加1:00000000,00000001.系统认为是正数,所以不对!
那么我们以补码来看一个负数:11111111,11111111(补码)那么它的原码就是:00000000,00000001.就是-1(早就声明了这个数是负数).所以不是最小的负数.如果一个负数的补码是:11111111,11111110.它的原码就是00000000,0000010.这个数是-2.如果一个负数的补码是:11111111,11111101.它的原码就是:00000000,00000011.也就是-3.可想而知,当一个负数的补码是10000000,00000000.那么它的原码就是int型最小的负数!至于最前面的1为什么不减,你想想也该知道,如果减了,这个数的还是负数吗?那我们再减1,这个数的码补就是:01111111,11111111.系统会认为是正数,它的原码和补码是一个样的,不就是正32767了吗?
好了,你懂了吗?不懂加我QQ396747973再给你讲!
Alex5111985
2008-02-21
打赏
举报
回复
学习从基础开始:)
anison
2007-10-28
打赏
举报
回复
还是有点迷糊...
hkk333
日帝★皇都
等 级:
hkk333(日帝★皇都) ()发表于:2007-10-22 23:20:2416楼 得分:4
int一般是32位,-2^32就是最小负数,2^32-1就是最大正数
考虑8位情况00----ff(hex),也就是00000000(10进制0)----11111111(bin) <10进制255 >
它一共能直接表示的数值个数是2^8=256个,非负数:0-127(ff hex) <128个 >,负数-1~-128 <128个 >
于是8位的范围就是-128~127 (-128,-127....-1,0,1,2,....127 <total 256 >)
注意01111111,这是8位中最大正数,0是符号位,那么显然能表示的最大正数是7F(hex)=127,还有一个0,剩下的就是负数,
256-1-127=128个,就是-1~-128
同理,n位整型范围是-2^n~~~2^n-1
罗嗦了点,同样建议楼主还是好好看基础书吧
----
这个比较好懂..谢谢大家
zhongguoren666
2007-10-23
打赏
举报
回复
这是二进制补码来算的.不是人为定义 的.
星光伴月
2007-10-23
打赏
举报
回复
汗:错了,太错了:
int数据类型在32位机器中多数是用32位二进制表示的,而2的32次方就是4294967296,即它最多能表示4294967296个不同的数,第一位表示符号之后,就只能表示一半的数了.
如果是64位机器,int数据类型可能是64位的(这由编译器决定),就可以表示多达18446744073709551615个不同的数了,即可以表示有符号数的范围是:
-9223372036854775808 ~ 9223372036854775807 够大吧?
星光伴月
2007-10-23
打赏
举报
回复
1
int数据类型在32位机器中多数是用32位二进制表示的,而2的32次方就是65536,即它最多能表示65536个不同的数,第一位表示符号之后,就只能表示一半的数了.
如果是64位机器,int数据类型可能是64位的(这由编译器决定),就可以表示多达4294967296个不同的数了,即可以表示有符号数的范围是:
-2147483648 ~ 2147483647
hkk333
2007-10-22
打赏
举报
回复
这个论坛不能编辑?
上面打错了一个字: 非负数:0-127(7f hex)
汗
hkk333
2007-10-22
打赏
举报
回复
int一般是32位,-2^32就是最小负数,2^32-1就是最大正数
考虑8位情况00----ff(hex),也就是00000000(10进制0)----11111111(bin)<10进制255>
它一共能直接表示的数值个数是2^8=256个,非负数:0-127(ff hex)<128个>,负数-1~-128<128个>
于是8位的范围就是-128~127
(-128,-127....-1,0,
1,2,....127
<total 256>)
注意01111111,这是8位中最大正数,0是符号位,那么显然能表示的最大正数是7F(hex)=127,还有一个0,剩下的就是负数,
256-1-127=128个,就是-1~-128
同理,n位整型范围是-2^n~~~2^n-1
罗嗦了点,同样建议楼主还是好好看基础书吧
anison
2007-10-22
打赏
举报
回复
...收获良多,还有一点不明白:以上各位都在知道负边界值是-32768的情况下讨论的
如果现在不知道任何结论,怎么推断int型能表示的最小负数啊..?
可能我真的太啰嗦.但我想把这个问题彻底弄清楚~~谢谢各位
anison
2007-10-22
打赏
举报
回复
...收获良多,还有一点不明白:以上各位都在知道负边界值是-32768的情况下讨论的
如果现在不知道任何结论,这么推断int型能表示的最小负数啊..?
可能我真的太啰嗦.但我想吧这个问题弄清楚
freshui
2007-10-22
打赏
举报
回复
这是16位机器上的int范围 -2^15 < i <2^15-1
32位机器是 -2^31 < i <2^31-1
星光伴月
2007-10-22
打赏
举报
回复
用二进制补码表示数的时候,除符号位之外,其它位全为0时,应该都表示0,所以,补码就有+0与-0之说,如果就按照这样表示的话,那么,计算机处理的数的范围(16位)就是: -32767~+32767,并且,0有两个,即+0和-0,有两个0,对计算机来说,不好处理.为了更好的处理这些数,就必须让其中一个0不再表示0,使0有惟一表示.根据符号位的定义,-0的符号位为1,应该表示负数更为合理,所以就规定,表示-32768.
这么说应该好理解一些了吧?
higter
2007-10-22
打赏
举报
回复
他可能问的是这个范围怎么算的。
这个和计算机的字长有关,现在一般都32位机,字长就是32位,也有大量用64位CPU的,字长就是64
panlong1987
2007-10-22
打赏
举报
回复
内存里都是二进制表示,而且都是用补码来表示的,每一个数的最高位是符号位,0表示正数,1表示负数,对于补码,正数的补码是本身,负数的补码是原码按位取反,然后加一,这样的话,正数的32678用二进制表示成10000000,00000000,这时最高位是一,所以认为是负数,所以代表-0而不是+32678,这样的话有两个0,那么正数也自然少一个了~~不知说的清不清楚
linking3000
2007-10-22
打赏
举报
回复
panlong1987和Turntogo同志说的很清晰,鼓掌
珍惜生命远离CPP
2007-10-21
打赏
举报
回复
补码表示。
geggegeda
2007-10-21
打赏
举报
回复
你这样吧,你先看看char 型的表示范围,他是从-128~127
正好255个数字,正好一个字节
你得弄清楚几个概念,二进制,十进制,他们之间怎么转换的
再弄明白什么是二进制原码,补码表示,你到网上到处都是,你找的那个就是补码的
用补码的原因就是计算机可以把减法当加法算.
PcrazyC
2007-10-21
打赏
举报
回复
你去看看原码,补码的资料吧,计算机里储存的都是以补码形式存在的,假设INT是16位的,10^16(最高位是1,其它位是0)正好是负数
-10^16的补码形式,而正数最大只能是10^16-1(最高位是0,其它位是1,正数补码与原码相同)
panlong1987
2007-10-21
打赏
举报
回复
在内存里都是用补码来表示的,所以要看补码的形式,对于0要特殊考虑
加载更多回复(4)
不同图片1234568
不同图片1234568
springboot钓鱼论坛小程序【附万字论文+PPT+包部署+录制讲解视频】.zip
标题SpringBoot钓鱼论坛小程序的设计与实现AI更换标题第1章引言阐述SpringBoot钓鱼论坛小程序的研究背景、意义、国内外现状、研究方法及创新点。1.1研究背景与意义分析钓鱼运动的发展现状及论坛小程序对钓鱼爱好者的价值。1.2国内外研究现状概述国内外钓鱼论坛及小程序的发展现状和技术应用。1.3研究方法以及创新点介绍SpringBoot技术及本论文的研究方法和创新之处。第2章相关理论总结和评述与SpringBoot钓鱼论坛小程序开发相关的理论。2.1SpringBoot框架概述介绍SpringBoot框架的核心特性及其在Web开发中的应用。2.2前端技术基础阐述小程序开发中常用的前端技术,如HTML、CSS、JavaScript。2.3数据库技术介绍数据库设计原则及MySQL数据库在论坛小程序中的应用。第3章SpringBoot钓鱼论坛小程序设计详细介绍SpringBoot钓鱼论坛小程序的整体设计方案。3.1系统架构设计系统的整体架构,包括前端、后端和数据库的交互。3.2功能模块设计详细设计用户管理、帖子发布、评论互动等核心功能模块。3.3数据库设计阐述数据库表结构、字段设计以及数据关系。第4章SpringBoot钓鱼论坛小程序实现介绍SpringBoot钓鱼论坛小程序的具体实现过程。4.1开发环境搭建介绍开发所需的软件、硬件环境及配置步骤。4.2核心功能实现阐述用户注册登录、帖子发布与展示、评论与回复等功能的实现。4.3界面设计与优化介绍小程序界面的设计原则、实现效果及优化措施。第5章系统测试与性能分析对SpringBoot钓鱼论坛小程序进行系统测试和性能分析。5.1测试环境与方法介绍测试所需的硬件、软件环境及测试方法。5.2功能测试与结果分析对各个功能模块进行测试,并分析测试结果。5.3性能测试与优化建议对系统进行性能测试,提出优化建议。第6章结论与展望总结S
Java源码springboot309基于Web手工艺品销售系统的开发与实现+MySQL前后分离.zip
本项目是基于Java源码的SpringBoot框架,开发了一个基于Web的手工艺品销售系统,系统采用前后分离的架构设计,前端使用Vue.js,后端使用SpringBoot,数据库采用MySQL。系统主要功能包括用户注册登录、商品展示、购物车管理、订单处理、支付集成、后台管理等功能模块。项目旨在为手工艺品销售提供一个便捷、高效、安全的在线交易平台,方便用户浏览和购买手工艺品,同时为商家提供商品管理和订单处理的一体化解决方案。通过前后分离的设计,提高了系统的可维护性和扩展性,确保了用户界面的友好性和操作的高效性。毕设项目源码常年开发定制更新,希望对需要的同学有帮助。
与《微观数据和MATLAB》一书相关的函数和脚本(Adams、Clarke、Quinn)_Functions and s
与《微观数据和MATLAB》一书相关的函数和脚本(Adams、Clarke、Quinn)_Functions and scripts associated with the book Microdata and MATLAB (Adams, Clarke, Quinn).zip
我们提出了一种新的试点净化方案,该方案结合了现有的两种方案——SPRS和WGC-PD方案。_We have propos
我们提出了一种新的试点净化方案,该方案结合了现有的两种方案——SPRS和WGC-PD方案。_We have proposed a novel pilot decontamination scheme which combines the two existing schemes_ SPRS and WGC-PD scheme..zip
C++ 语言
65,198
社区成员
250,522
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章