当前位置:首页 > 内存 > 正文

内存中的数据类型

  • 内存
  • 2024-05-23 02:55:22
  • 2637

一、在C语言中各种数据类型各占多少位(1)32位平台:
分为有符号和无符号。
有符号类型:
Short占用内存2个字节,范围为-2^15~(2^15-1)
int占用内存4个字节,范围为-2^31~(2^31-1)
long在内存中占用四个字节,范围为-2^31~2^31-1
无符号类型:最高位符号位不是表示
unsignedshort在内存中占用两个字节,范围为0~2^16-1
unsignedint在内存中占用四个字节,范围为0~2^32-1
unsignedlong占用四个字节内存中的字节数,范围为0~2^32-1
实数类型变量:
有单精度float和双精度double两种形式:
float:占用4个字节,提供7~8位有效数字。
Double:占用8个字节,提供15~16位有效数字。
(2)16位平台:
1)整型(基类型):类型说明符为int,占用内存2个字节。
2)短整型:类型说明符为shortint或short。占用字节数和取值范围与整数类型(基本类型)相同。
3)长整型:类型说明符为longint或long,占用内存4个字节。
无符号类型:类型标识符是无符号的。
通过前面三种类型的匹配即可形成无符号类型:
各种无符号类型所占用的内存空间字节数与对应的有符号类型相同。然而,由于省略了符号位,因此无法表示负数。
实数类型变量:
分为三类:单精度(float类型)、双精度(double类型)和longdouble精度(longdouble类型)。
单精度类型占用4字节(32位)内存空间,其取值范围为3.4E-38~3.4E+38,只能提供7位有效数字。
双精度类型占用8字节(64位)内存空间,取值范围为1.7E-308~1.7E+308,可提供16位有效数字。
16字节(128位)双精度长存储空间可提供18-19位有效数字。
二、内存的类型和特点

内存一般指随机存取存储器,简称RAM。前面说过,静态内存(SRAM)是作为系统缓存使用的,而我们通常所说的计算机内存是指动态内存,也就是DRAM。此外,还有各种用途的存储器,如显示卡使用的VRAM、存储系统设置信息的CMOSRAM等。
💾动态内存
动态内存中所谓的“动态”是指我们将数据写入DRAM后,一段时间后数据就会丢失,所以内存刷新(MemoryRefresh)需要操作,这需要额外的电路设计。
🔋内存刷新
刷新操作频繁检查电容,如果电量大于1/2满电量,则认为代表1,如果电量小于则认为表示1,电容充满大于1/2,则认为代表0,对电容进行放电,以保持数据的连续性。通过刷新操作,动态存储器的访问速度比静态存储器慢得多。
🔍检查和纠正错误
内存中传输的数据量很大,肯定会出现错误,当要求较高时,就需要检查和纠正错误的功能。


三、JAVA中数据类型有几种,请举例说明JAVA数据类型分为基本数据类型和参考数据类型。
基本数据类型
Java包含8种基本数据类型,分别是:
boolean、byte、char、short、int、float、douboe、long
Byte
byte是JAVA中最小的数据类型。在内存中占用8位(8位),取值范围为-128到127
赋值:byteI=127。
整型shortShort
short类型在内存中占用2个字节,取值范围为-32768到32767
赋值:shorti=32767;
Char字符类型
char类型在内存中占用2个字节。代表一个字符,也可以使用ASCII码范围内的值来给char类型的变量赋值。由于内存中字符值没有负值范围,所以所有值的范围是0到65535
赋值:chari='a'或chari=97;
int整数
int类型在内存中占用4个字节。取值范围为-2147483648到2147483647
赋值:inti=10;
单精度浮点float类型
float类型在内存中占用4个字节。取值范围为-3.4E38到3.4E38
赋值:float=1.0f;
long类型long
long类型在内存中占用8个字节。取值范围为-9223372036854775808到9223372036854775807
双精度浮点类型double
double类型在内存中占用8个字节。取值范围是-1.7E308到1.7E308
boolean类型
boolean类型只有两个值:true和false。
基本数据类型的相互转换
转换规则
JAVA中所有的数值变量都是有符号的(正负)。
JAVA不允许任意类型转换。只能转换数值变量,但不能任意转换。
带小数点的数值变量默认为双精度型。float类型定义必须进行强制转换。
如果将字节数较少的数值变量分配给字节数较大的类型,则不需要强制类型转换,在这种情况下会自动转换。
当int类型变量赋值给char类型变量时,JVM会根据int类型变量的值在ASCII码表中找到对应的字符,然赋值给char类型变量。反之亦然。但要遵循规则4。
初始化简单数据类型时要注意赋值范围。如果超出此范围,则会发生编译错误。
基本数据类型的默认初始值
类型初始值
booleanfalse
byte0
char0
Short0
int0
float0.0
double0.0
long0
基本数据类型的默认初始值表
类型参考数据
JAVA中,所有非简单数据类型都是参考数据类型。