当前位置:网站首页>整型及浮点型数据在内存中的存储
整型及浮点型数据在内存中的存储
2022-07-19 05:03:00 【发烧的CPU】
目录
一、数据类型详细介绍
1、基本的内置类型
char // 字符数据类型,1个字节
short //短整型,2个字节
int // 整型,4个字节
long //长整型,32位机器下4个字节,64位机器下8个字节
long long //更长的整型,C99标准中才有,8个字节
float //单精度浮点型,4个字节
double //双精度浮点型,8个字节
2、类型的基本归类
a.整型家族:
char
unsigned char
signed char
short
unsigned short[int]
signed short[int]
int
unsigned int
signed int
long
unsigned long[int]
signed long[int]
long long
unsigned long long[int]
signed long long[int]
(注:字符的本质是ASCII码值,是整型,char到底是signed char还是unsigned char,标准是未定义的,取决于编译器的实现)
b.浮点数家族:
float//精度低
double//精度高
c.构造类型:
数组类型
结构体类型 struct
枚举类型 enum
联合类型 union
d.指针类型:
int *pi;
char *pc;
float* pf;
void* pv;
e.空类型:
void表示空类型(无类型)
通常应用于函数的返回类型、函数的参数、指针类型。
二、整型在内存中的存储
1、原码、反码、补码
计算机中的整数以2进制形式表示,以补码的形式存储在内存中。
二进制第一位是符号位(0表示正,1表示负),后面31位是数值位。
a.正整数的原码、反码、补码都相同。
b.复整数的原码:直接将数值按照正负数的形式翻译成二进制。
反码:符号位不变,其他位按位取反。
补码:反码+1。
2、大小端介绍
大端字节序存储:低位字节序保存在内存的高地址中,高位字节序保存在内存的低地址中。
小端字节序存储:低位字节序保存在低地址中,高位字节序保存在高地址中。
3、实例剖析
(1)
#include <stdio.h>
int main()
{
char a= -1;
signed char b=-1;
unsigned char c=-1;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
为什么出现这样的结果呢?
10000000000000000000000000000001(-1的原码)
11111111111111111111111111111110(-1的反码)
11111111111111111111111111111111(-1的补码)
存储在字符型中发生截断:11111111
%d是打印有符号的整型,即发生整型提升(有符号数高位补符号位的数)
11111111111111111111111111111111
再取反+1得到:
10000000000000000000000000000001
最后,a和b的打印值是-1。
而对于无符号字符型,发生整型提升时高位补0,即:
00000000000000000000000011111111
这时,最高位为0,默认它为正值,还原到原码后仍然为:
00000000000000000000000011111111
最后,c的打印值是255。
(2)
#include <stdio.h>
int main()
{
char a = -128;
printf("%u\n",a);
return 0;
}
10000000000000000000000010000000(-128的原码)
11111111111111111111111101111111(-128的反码)
11111111111111111111111110000000(-128的补码)
10000000(截断)
整型提升后:
11111111111111111111111110000000(此时以补码形式存储在内存中)
%u是指打印无符号的整型,即:
11111111111111111111111110000000被当作了无符号数,打印值为4294967168
三、浮点型的存储:
见链接:https://blog.csdn.net/lang_965/article/details/125010893?spm=1001.2014.3001.5501
边栏推荐
猜你喜欢
随机推荐
Niuke sword finger offer cut rope
地址栏输入www.baidu.com之后
The pit that wechat payment stepped on in those years
Yolov5 realizes smoking behavior detection
牛客剑指offer 机器人的运动范围
Yolov5 apple banana detection
用C实现三种版本的通讯录
Path in sword finger offer matrix
STM32-基于汇编来分析延时
YOLO系列目标检测数据集大全
华录杯-江苏违法广告检测-冠军总结
【 YOLOv5实现口罩和人脸检测】
Serialization concept learning
pytorch 实现数据增强分类 albumentations的使用
pytorch 数据增强cutmix的实现
整数的分划问题
Rookie teaches you to repair USB flash disk
yolov3的Gui界面(2)--美化页面+输出识别物体名称及数量
It's too voluminous. A company has completely opened its core system (smart system) that has been operating for many years
Introduction to pytoch target classification competition