C/C++数据类型
C/C++数据类型
一、分类表格
C语言数据类型 | 基本类型 | 整数类型 |
---|---|---|
浮点类型 | ||
构造类型 | 数组类型 | |
结构体类型 | ||
共用体(联合)类型 | ||
指针类型 | ||
空类型(void) |
二、数据类型三要素
- 存储数据的宽度
- 存储数据的格式
- 作用范围(作用域)
三、整数类型
类型 | 宽度 | 字节数 |
---|---|---|
char | 8bit | 1字节 |
short | 16bit | 2字节 |
int | 32bit | 4字节 |
long | 32bit | 4字节 |
数据类型在反汇编中的表示:
整数类型分为有符号(signed)和无符号(unsigned)
四、浮点类型
类型 | 宽度 | 字节数 |
---|---|---|
float | 32bit | 4字节 |
double | 64bit | 8字节 |
float类型存储方式
double类型存储方式
浮点类型转化为内存存储格式的方法:
-
先将这个实数的绝对值化为二进制格式
-
将这个二进制格式实数的小数点左移或右移n位,直到小数点移动到第一个有效数字的右边
-
从小数点右边第一位开始数出二十三位数字放入第
22
到第0
位 -
如果实数是正的,则在第
31
位放入0
,否则放入1
-
如果
n
是左移得到的,说明指数是正的,第30
位放入1
。如果n
是右移得到的或n=0
,则第30
位放入0
-
如果
n
是左移得到的,则将n
减去1
后化为二进制,并在左边加0
补足七位,放入第29
到第23
位如果n是右移得到的或
n=0
,则将n
化为二进制后在左边加0
补足七位,再各位求反,再放入第29
到第23
位
ps:中间8
位可以用127+n
(左移为正右移为负)得到
1.25的转换步骤: -
二进制格式:
1.01
-
移
0
位(1.25=1.25*2^0
) -
1.25
=0 0 1111111 01000000000000000000000
=3FA00000
PS:二进制表示小数并不是精确的,会出现无限循环的情况,只得取前n
位近似
英文与中文字符存储略