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位近似
英文与中文字符存储略

浙公网安备 33010602011771号