当前位置:网站首页>C语言--数据的存储(上)
C语言--数据的存储(上)
2022-08-09 23:38:00 【zeroGho】
一、数据类型
整形:
char:
unsigned char
signed char
short:
unsigned short
signed short
int:
unsigned int
signed int
long:
unsigned long
signed long
浮点型:
float
double
自定义类型
数组
结构体 struct
枚举 enum
联合 union
指针
int*
char*
float*
void*
空类型
void
二、整形在内存的存储
整形在内存中占4个字节的空间,以二进制的形式存储,具体又有原码,反码,补码的区别
2.1 原码,反码,补码
正数的原、反、补码都相同。
负整数的三种表示方法各不相同
原码:直接将数值按照正负翻译为二进制数
反码:原码符号位不变,其他位取反
补码:反码+1
数据在内存中存储的其实是数据的补码
例如:
如图,数据在内存的存储确实为补码,但顺序有所不同
2.2 大小端字节序
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。
2.3 练习
我们来做几个简单的练习熟悉下整形的存储
练习一:
#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;
}
运行结果:
解析:
char a = -1;
-1:原码 10000000000000000000000000000001
反码 11111111111111111111111111111111110
补码 11111111111111111111111111111111111
但a是char类型,只有一个字节因此要截断,最后只留下 11111111 存入a中
同理 b和c中存的也是 11111111
在打印时,以整形打印a和b,先整形提升,由于a和b都是有符号字符类型,高位补符号位
11111111-->11111111111111111111111111111111-->打印-1
c 是无符号字符型,高位补0
11111111-->000000000000000000000011111111-->打印255
练习二:
#include <stdio.h>
int main()
{
char a = -128;
char b = 128;
printf("%u %u\n", a, b);
return 0;
}
运行结果:
128 :0000 0000 0000 0000 0000 0000 1000 0000
-128:1000 0000 0000 0000 0000 0000 1000 0000
128补码与原码相同
-128补码:1111 1111 1111 1111 1111 1111 1000 0000
存储时截断,a = 1000 0000 b = 1000 0000
无符号整形打印时,先整形提升,补符号位,再按照无符号整形打印
a = 1111 1111 1111 1111 1111 1111 1000 0000
b = 1111 1111 1111 1111 1111 1111 1000 0000
而上面这个二进制数转换为十进制就是 4,294,967,168
边栏推荐
猜你喜欢
信息系统项目管理师核心考点(六十四)信息安全基础知识重要概念
framework源码读后感
JVM内存和垃圾回收-10.直接内存
Digital wallets, red sea ecological rapid introduction of small programs can help capture device entry wisdom
MATLB|和她跌宕起伏最终到达人生之峰【浪漫旅途】
分布式数据库难题(三):数据一致性
JVM Memory and Garbage Collection - 10. Direct Memory
The older tester has just passed the "hurdle" of being 35 years old, and I want to tell you something from my heart
【Infiltration tool】Browser data export tool
安全知识培训——消防安全
随机推荐
const修饰指针的三种情况
NTU General Database-Gbase-8a-Learning-04-Deploying Distributed Clusters
Golden Warehouse Database KingbaseGIS User Manual (6.4. Geometry Object Access Function)
无源晶振负载电容值CL匹配方法及说明
从TRPO到PPO(理论分析与数学证明)
Linux安装Oracle和postgrepSQL数据库
Distributed database problem (3): data consistency
Project (7) - PolarSeg point cloud semantic segmentation
今日睡眠质量记录61分
NTP SERVICE TASK 在GWserver配置、启用NTP服务,为当前环境提供时钟同步服务,Client主机可以从该服务器同步时间。
Wireshark经典实践和面试13点总结
算法---整数替换(Kotlin)
Redis 大 key 要如何处理?
源码编译安装LAMP和LNMP
JSP简介
ECCV 2022 | 微软开源TinyViT :搞定小模型的预训练能力
Eureka protects itself
selenium和驱动安装
[SUCTF 2019]CheckIn (.htaccess和.user.ini)
什么是服务治理