总结:一篇有关整数和浮点数在内存中存储的文章。

 

目录:

一,数据类型分类

1.数值类型。

1.1整形

1.2浮点型

二,整形在内存中存放

三,浮点型在内存中的存放

四,大端小端存储字节序

1.数值类型

字节是计算机中存储的最小单位,一个字节等于八位。

1字节 = 8 bit(对应二进制中的位数)\n\n

1.byte:字节型   \n          作用:用于储存整数\n          占用内存:占用1个字节\n          取值范围:-128~127\n

2.short:短整型\n        作用:用于储存整数\n        占用内存:占用2个字节\n        取值范围:-2的15次方到2的 15次方减1\n

3.int:java中常用的整型\n 作用:用于储存整数\n 占用内存:占用4个字节\n 取值范围:-2的31次方到2的31次方减1\n

4.long:长整型\n 作用:用于储存较大的整数\n 占用内存:占用8个字节\n 取值范围:-2的62次方到2的62次方减1\n        注:在使用long储存整数时必须在变量值的后面加上L/l;\n

5.float:单精度浮点型\n        作用:用于储存小数\n        占用内存:占用4个字节\n        注:在使用float保存小数的时候,必须在变量值的后面加f/F,\n不能表示精确的值\n

6.double:双精度浮点型\n        作用:java中常用的浮点型,用来保存小数\n        占用内存:占用8个字节\n 注:不能表示精确的值\n

7.char:字符型\n 作用:用来保存单个字符也可以用来储存整数\n        占用内存:占用2个字节\n 应用格式:采用的是unicode编码格式 \n        储存整数时的取值范围:0~65535\n        注:里面每个字符都对应一个整数,例如:a=97,数字0对应48\n

8.boolean:布尔型\n        作用:用来储存true或者false\n        占用内存:占用1个字节\n

整数在内存中的存储

整数的二进制表示形式有三种:原码,反码和补码

这三种表示方法均有符号位和数值位两部分组成,符号位为最高位,0为“正”,1为“负”,其余位均是数值位。

原码:直接将数值按照正负数翻译成二进制数得到的就是原码(人思维上所想的数)

反码:原码符号为不变,其他位按位取反;(0变1,1变0)

补码:反码基础上+1;

正整数的原码,反码,补码都相同。

而负整数的原码,反码,补码都不相同;

首先是整数的储存方式,众所周知,整数是不含小数的数字,可以是正数也可以是负数,通常都采用二进制的方式进行储存,这个长度一般是4个字节(32位)或者是8个字节(64位),取决于计算机的体系结构。例如,32位的整数可以表示范围从-2,147,483,648到2,147,483,647的整数,而它的储存方式是使用补码表示法。正数的二进制表示与其本身相同,而负数的二进制表示是其绝对值的二进制表示取反后再加1。这样做的好处是可以使用相同的算术运算符来处理正数和负数。\n\n下面是一个使用相同的算术运算符来处理正数和负数的例子:

在这个例子中,我们定义了两个整数变量 num1 和 num2,分别赋值为 10 和 -10。然后,我们使用相同的加法运算符 + 来对这两个变量进行求和,并将结果赋值给变量 sum。\n\n正数 10 的二进制表示为 0000 0000 0000 0000 0000 0000 0000 1010,而负数 -10 的二进制表示是其绝对值 10 的二进制表示取反后再加1,即 1111 1111 1111 1111 1111 1111 1111 0110。\n\n由于使用了补码表示法,加法运算符 + 可以对正数和负数进行相同的操作,并得到正确的结果。在本例中,10 + (-10) 的结果是 0。\n\n这个例子说明了正数和负数在二进制表示中的差异,并且展示了使用相同的算术运算符来处理它们的好处。补码的使用使得我们可以使用相同的算术运算符来进行整数的加减运算,简化了代码的编写和理解。

浮点数在内存中的存储

常见的浮点数;3.14159,1E10等,浮点数家族包括;float,double,long doube 类型。

浮点数表示的范围:float.h中定义(整数的取值范围:limits.h)

根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数v可以表示成下面的形式:

V = (-1)*S*M*2e*

(-1)表示符号位,当s=0, V为正数:当s=1,v为负数

M表示有效数字,M是大于等于1,小于2的

2E表示指数位

IEEE 754规定;

对于32位的浮点数(float);最高的一位存储位S。接着的8位存储指数E,剩下的23位存储有效数字M,对于64位的浮点数(doube),最高的1位存储符号位s,接着的11位存储指数E,剩下的52位存储有效数字M,

大端小端存储字节序

字节的排列方式有两个通用规则:

\n\n大端序(Big-Endian)将数据的低位字节存放在内存的高位地址,高位字节存放在低位地址。这种排列方式与数据用字节表示时的书写顺序一致,符合人类的阅读习惯。

\n小端序(Little-Endian),将一个多位数的低位放在较小的地址处,高位放在较大的地址处,则称小端序。小端序与人类的阅读习惯相反,但更符合计算机读取内存的方式,因为CPU读取内存中的数据时,是从低地址向高地址方向进行读取的。

举例:\n\n数字0x12345678\n\n

小端模式中的存储方式为:

大端模式中的存储方式为:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值