为什么需要定义数据类型???
2019-08-26 06:18:51来源:博客园 阅读 ()
为什么需要定义数据类型???
变量和数据类型难舍难分,思考了好久,得出下面这个结论:
变量是内存中的一个存储区域。而数据类型的定义决定了这块存储区域的大小。【变量与数据类型的关系】
为什么需要定义变量存储区域的大小?
以结果为导向来分析:
Java的整数类型分为4种:byte,short,int,long。
四种的区别在于占用的存储空间不一样。
byte占用1个字节,short占用2个字节,int占用4个字节,而long占用8个字节。
什么是字节?
字节是一种存储单位的度量。1个字节等于8位。
什么是位呢?
位可以理解为计算机的最小单位:0或者是1。也就是是说1个字节是8个0和1的排列组合:
比如说:00000000,00000001,00000011,......11111111。
那么在这种情况下1个字节可以表示多大的数呢?
00000000转换为十进制依然是0,11111111转换为十进制是255。
转换工具:https://tool.lu/hexconvert/
也就是说,一个字节最大可以表示255而最小1可以表示0。
这是无符号位的情况,如果8位表示正数和负数,那么8位可以表示的范围是多大呢?
通常情况下,用第一位来表示正负【0为正,1为负】,这样算下来8位可以表示的范围是-127到+127。
历史长河中,补码登场
上述引入符号位的8位二进制数可以理解为原码。对于正数来说,原码就是补码,而对于负数来说,保留符号位,其他原码按位取反加1所得即为补码。补码的出现使得加减法只有加法,简化了计算结构,提高运算速度。
那么8位的情况下,用补码来衡量,可以表达的范围是-128--127。
为什么是-128???(按照补码计算)
10000001到11111111表示的范围是1到127,01111110到00000001表示的范围是-1到-127。
而00000000属于负数,按位取反加1的结果是10000000表示的数值是-128,但是00000000是负数。
所以8位二进制数在计算机里存储的范围是-128--127。
回到刚刚字节的问题,1字节等于8位而八位可以表示-128--127。这是byte类型的表示范围。
那如果我想用计算机计算1000加上1000,byte明显是不可用的。因为byte表示不了1000这个数值。
而short类型的存储空间为2个字节,也就是16位。对于short数据类型来说,能表示多大的数呢?
根据8位的表示范围推算:- 2的15次方到2的15次方-1=={-32768--32767}
以此类推,int为4个字节,long为8个字节,能表示的数更大。
Java通过定义变量的类型来规定变量的内存空间大小,通过阶梯式的定义,既有满足小数值运行的byte类型,也有支持大数值运算的long类型。这样不仅满足运算的最大支持(long),同时也能节省系统内存资源(byte)。
总结:数据类型的区分是一种系统资源分配优化的方案。
原文链接:https://www.cnblogs.com/noneplus/p/11390853.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 类的继承,方法重新中修饰符如何定义 2020-06-10
- 为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中? 2020-06-09
- 计算机基础到底是哪些基础?为什么很重要! 2020-06-08
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
- 错误: 在类中找不到 main 方法, 请将 main 方法定义为: & 2020-06-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash