C进阶-数据的存储

文章目录

  • 1. 数据类型介绍
    • 类型的基本归类
  • 2. 整型在内存中的存储:原码,反码,补码
      • 2.1. 原码,反码,补码
    • 2.2. 大小端介绍
      • 大端字节序存储
      • 小端字节序存储
      • 例:设计程序判断是大端还是小端?
    • 2.3. 练习
      • 练习1
      • 练习2
      • 练习3
      • 练习4
  • 3. 浮点型在内存中的存储

1. 数据类型介绍

数据类型数据类型字节
char字符数据类型1
short短整型2
int整型4
long长整型4/8
long long更长的整型8
float单精度浮点数4
double双精度浮点数8
  • 类型的意义:
    1.使用这个类型开辟空间的大小.(大小决定了适用范围).
    2.如何看待内存空间的视角.

类型的基本归类

整型家族://字符的本质是ASCII码值,是整型,所以划分到整型家族.//char到底是signed char 还是unsigned char 标准是未定义的,取决于编译器的实现.charunsigned charsigned charshortunsigned short [int]signed short [int]int//int a; <---> signed int a;unsigned intsigned intlongunsigned long [int]signed long [int]long long1unsigned long long [int]signed long long [int]
浮点型家族:只要表示小数就可以使用浮点型
float 的精度低,存储的数值范围比较小,
double 的精度高,存储的数组范围比较大
构造类型: 自定义类型-可以自己创建出新的类型数组类型结构体类型 struct枚举类型 enum联合类型 union
指针类型:int *pi;char* pc;float* pf;void* pv;
空类型: voidvoid test(void);//第一个void 表示函数不会返回值//第二个void 表示函数不需要传任何参数

2. 整型在内存中的存储:原码,反码,补码

  • 数值的表示
    • 2进制 0b10101
    • 8进制 025
    • 10进制 21
    • 16进制 0x15

2.1. 原码,反码,补码

  • 整数的2进制也有3种表示形式:

    • 符号位+数值位,符号位为0表示"正", 为1表示"负".
    • 1.正的整数,原码,反码,补码相同
    • 2.负的整数,原码,反码,补码需要计算.
    • 原码: 直接通过正负的形式写出二进制序列就是原码
    • 反码: 原码的符号位不变,其他位按位取反
    • 补码: 反码+1
  • 整数内存中存补码的2进制

    • 为什么?
    • 使用补码,可以将符号位和数值域统一处理
    • 同时,加法和减法也可以统一处理(CPU只有加法器).
    • 补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路.
    int a = 20;
    //20
    //00000000 00000000 00000000 00010100
    //0x 00 00 00 14
    //原码,反码,补码相同//int b = -10;
    //-10
    //10000000 00000000 00000000 00001010 -- 原码
    //11111111 11111111 11111111 11110101 -- 反码
    //11111111 11111111 11111111 11110110 -- 补码
    //0x ff ff ff f6
    

在内存窗口查看20,-10的地址中存储的数据
在这里插入图片描述

2.2. 大小端介绍

大端字节序存储

  • 把一个数据的高位字节序的内容存放在低地址处,
    把低字节序的内容存放在高地址处,就是大端字节序存储.

小端字节序存储

  • 把一个数据的高位字节序的内容存放在高地址处,
    把低字节序的内容存放在低地址处,就是小端字节序存储.

例:设计程序判断是大端还是小端?

```//*(char*)&a --> int*//check_sys();int check_sys(){int a = 1;return *(char*)&a;}int main(){int ret = check_sys();if (ret){printf("小端\n");}else{printf("大端\n");}return 0;}```

2.3. 练习

练习1

	char a = -1;	signed char b = -1;		//-1是整数//10000000 00000000 00000000 00000001 -- 原码//11111111 11111111 11111111 11111110 -- 反码//11111111 11111111 11111111 11111111 -- 补码//存到char,截断,取低地址的后8位//11111111//%d --打印有符号的整型//整型提升,char有符号,补符号位1//11111111 11111111 11111111 11111111 -- 补码//10000000 00000000 00000000 00000000 -- 反码//10000000 00000000 00000000 00000001 -- 原码//-1unsigned char c = -1;		//整数-1,截断后存unsigned char//11111111//%d打印整型//整型提升,数据类型为无符号整型,补0//00000000 00000000 00000000 11111111 -- 整数//255printf("%d %d %d\n",a,b,c);//-1 -1 255``````signed char :	-128~127补码:0~2^7,-1~-2^7原码:0~127,-128~-1	unsigned char:	0~255unsigned short: 	-32768~0~32767signed short:	0~65535

练习2

	char a = -128;printf("%u\n", a); 		//4,294,967,168//-128整数//10000000 00000000 00000000 10000000//11111111 11111111 11111111 01111111//11111111 11111111 11111111 10000000//放char//截断//10000000//整型提升//11111111 11111111 11111111 10000000//%u 打印无符号整数//4,294,967,168

练习3

	char a = 128;printf("%u\n", a);//128整数//00000000 00000000 00000000 10000000//截断//10000000//整型提升--看a的类型//11111111 11111111 11111111 10000000 //%u 打印无符号整数//4,294,967,168

练习4

		int i = -20;unsigned int j = 10;printf("%d\n",i+j);//-10//-20//10000000 00000000 00000000 00010100//11111111 11111111 11111111 11101011//11111111 11111111 11111111 11101100//10//00000000 00000000 00000000 00001010////-20+10//11111111 11111111 11111111 11101100   -- -20//00000000 00000000 00000000 00001010	-- 10//11111111 11111111 11111111 11110110	-- 补码//10000000 00000000 00000000 00001001//10000000 00000000 00000000 00001010   -- -10

3. 浮点型在内存中的存储

  • 浮点数家族:flloat, double, long double类型.
  • 浮点数存储规则:
    • 国际标准IEEE754:,任意一个二进制浮点数V可以表示成下面的形式:
(-1)^S * M * 2^E(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。M表示有效数字,大于等于1,小于2。2^E表示指数位。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/659986.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker容器---docker-Consul部署

一、Docker-consul简介 1、概述 consul是google开源的一个使用go语言开发的服务管理软件。支持多数据中心、分布式高可用的、服务发现和配置共享。采用Raft算法&#xff0c;用来保证服务的高可用。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多…

刚刚!MySQL8.4.0 LTS发布,接着再探

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验&#xff0c; Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、My…

spark实验求TOP值

实验1&#xff1a;求TOP值 已知存在两个文本文件&#xff0c;file1.txt和file2.txt&#xff0c;内容分别如下&#xff1a; file1.txt 1,1768,50,155 2,1218, 600,211 3,2239,788,242 4,3101,28,599 5,4899,290,129 6,3110,54,1201 7,4436,259,877 8,2369,7890,27 fil…

深度学习突破:LLaMA-MoE模型的高效训练策略

在人工智能领域&#xff0c;大模型&#xff08;LLM&#xff09;的崛起带来了前所未有的进步&#xff0c;但随之而来的是巨大的计算资源需求。为了解决这一问题&#xff0c;Mixture-of-Expert&#xff08;MoE&#xff09;模型架构应运而生&#xff0c;而LLaMA-MoE正是这一架构下…

JAVA面试题分享---多线程与线程池

多线程 什么是线程?线程和进程的区别?&#xff08;了解&#xff09; 线程&#xff1a;是进程的一个实体&#xff0c;是 cpu 调度和分派的基本单位&#xff0c;是比进程更小的 可以独立运行的基本单位。 进程&#xff1a;具有一定独立功能的程序关于某个数据集合上的一次运…

【深度学习基础(1)】什么是深度学习,深度学习与机器学习的区别、深度学习基本原理,深度学习的进展和未来

文章目录 一. 深度学习概念二. 深度学习与机器学习的区别三. 理解深度学习的工作原理1. 每层的转换进行权重参数化2. 怎么衡量神经网络的质量3. 怎么减小损失值 四. 深度学习已取得的进展五. 人工智能的未来 - 不要太过焦虑跟不上 一. 深度学习概念 先放一张图来理解下人工智能…

C语言实验-数组、字符串以及指针

一&#xff1a; 求一个NN矩阵主、次对角线上所有元素之和。矩阵输入、矩阵输出、矩阵对角线求和分别用三个子函数实现。&#xff08;N的值由用户从键盘输入&#xff09; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h>void print(int(*arr…

visionPro链接相机

搜索Cognex GigE Vision Configura… 修改子网掩码为255.255.255.0 配置驱动程序 更新驱动&#xff08;如果能够选择9014Bytes&#xff0c;跳过此步骤&#xff09; 更新更改 相机ip配置 打开visionPro 选择照相机 查看实时画面 运行保存图像

TiDB 利用binlog 恢复-反解析binlog

我们知道TiDB的binlog记录了所有已经执行成功的dml语句&#xff0c;类似mysql binlog row模式 &#xff0c;TiDB官方也提供了reparo可以进行解析binlog&#xff0c;如下所示: [2024/04/26 20:58:02.136 08:00] [INFO] [config.go:153] ["Parsed start TSO"] [ts449…

邦注科技 激光切水口设备 车灯水口切割

激光切水口是一种利用激光技术进行切割的设备&#xff0c;通常用于汽车灯具制造中的水口切割工艺。水口是指汽车灯具表面上的透气孔或者排水孔&#xff0c;用于排除灯具内部的水汽&#xff0c;防止灯具起雾或者受潮。激光切水口设备通过激光束对汽车灯具进行精确切割&#xff0…

【论文阅读】IPT:Pre-TrainedImageProcessingTransformer

Pre-TrainedImageProcessingTransformer 论文地址摘要1. 简介2.相关作品2.1。图像处理2.2。 Transformer 3. 图像处理3.1. IPT 架构3.2 在 ImageNet 上进行预训练 4. 实验4.1. 超分辨率4.2. Denoising 5. 结论与讨论 论文地址 1、论文地址 2、源码 摘要 随着现代硬件的计算能…

手持LED弹幕,超炫特效,让你的每一次出场都耀眼夺目!

在这个快节奏的数字时代&#xff0c;沟通不再局限于言语和文字&#xff0c;就连表白、追星、晚会互动&#xff0c;甚至日常的提词都需要一点科技的火花来点燃气氛。于是&#xff0c;手持LED弹幕滚动屏&#xff0c;这个集实用与趣味于一身的神器&#xff0c;悄然成为了社交场上的…