来喽!!炒鸡详细的“数据在内存中的存储”真的来喽!

news2024/9/23 3:33:59

目录​​​​​​​

1. 整数在内存中的存储

1.1 ⼆进制介绍

1.1.1 2进制转10进制

1.1.2 10进制转2进制

1.1.3  2进制转8进制

1.1.4 2进制转16进制

1.2 原码、反码、补码

2. ⼤⼩端字节序和字节序判断

2.1 什么是⼤⼩端?

2.2 为什么有⼤⼩端?

2.3 练习

2.3.1 练习1

2.3.1.1 题目

2.3.1.2 思路

2.3.1.3 方法1

2.3.1.4 方法2(函数实现)

2.3.2 练习2

2.3.2.1 题目

2.3.2.2 思路

2.3.2.3 代码验证

2.3.3 练习3

2.3.3.1 题目

2.3.3.2 思路

2.3.3.3 代码验证

2.3.4 练习4

2.3.4.1 题目

2.3.4.2 思路

2.3.4.3 代码验证

2.3.5 练习5

2.3.5.1 题目

2.3.5.2 思路

2.3.5.3 代码验证

2.3.6 练习6

2.3.6.1 题目

2.3.6.2 思路

2.3.6.3 代码验证

2.3.6.4 为什么x86环境下,结果不同?

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

3.1 练习

3.2 浮点数的存储

3.2.1 浮点数存的过程

3.2.2 浮点数取的过程

3.3 题⽬解析


1. 整数在内存中的存储

在了解整数在内存中的存储方式之前,我们先要了解二进制。

1.1 ⼆进制介绍

其实我们经常能听到2进制、8进制、10进制、16进制这样的讲法,那是什么意思呢?其实2进制、8进制、10进制、16进制是数值的不同表⽰形式⽽已。

我们重点介绍⼀下⼆进制:

⾸先我们还是得从10进制讲起,其实10进制是我们⽣活中经常使⽤的,我们已经形成了很多尝试:

• 10进制中满10进1

• 10进制的数字每⼀位都是0~9的数字组成

其实⼆进制也是⼀样的

• 2进制中满2进1

• 2进制的数字每⼀位都是0~1的数字组成

例如 1101 就是⼆进制的数字。

1.1.1 2进制转10进制

其实10进制的123表⽰的值是⼀百⼆⼗三,为什么是这个值呢?其实10进制的每⼀位是有权重的,10进制的数字从右向左是个位、⼗位、百位....,分别每⼀位的权重是 10^0 , 10^1 , 10^2 ... 

如下图:

2进制和10进制是类似的,只不过2进制的每⼀位的权重,从右向左是: 2^0 , 2^1 , 2^2 ... 

如果是2进制的1101,该怎么理解呢?

1.1.2 10进制转2进制

1.1.3  2进制转8进制

• 8进制中满8进1

• 8进制的数字每⼀位都是0~7的数字组成

•在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算⼀

个8进制位剩余不够3个2进制位的直接换算

如:2进制的01101011,换成8进制:0153,0开头的数字,会被当做8进制

1.1.4 2进制转16进制

  ↵  

• 16进制中满16进1

• 16进制的数字前10位都是0~9的数字组成,后6位由a~f的字母代替数字组成

• 在2进制转16进制数的时候,从2进制序列中右边低位开始向左每4个2进制位会换算⼀个16进制位剩余不够4个⼆进制位的直接换算

如:2进制的01101011,换成16进制:0x6b,16进制表⽰的时候前⾯加0x

到这里,二进制就介绍完了

下面,我们来介绍整数的2进制表⽰⽅法

1.2 原码、反码、补码

整数的2进制表⽰⽅法有三种,即原码、反码和补码

三种表⽰⽅法均有符号位数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位最⾼位的⼀位是被当做符号位,剩余的都是数值位。

正整数的原、反、补码都相同。

无符号的整数(>=0),没有符号位;32位都是数值位

负整数的三种表⽰⽅法各不相同。

原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码。

反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

补码:反码+1就得到补码。

对于整形来说:数据存放内存中其实存放的是补码

为什么呢?

在计算机系统中,数值⼀律⽤补码来表⽰和存储。原因在于,使⽤补码,可以将符号位和数值域统⼀处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路

计算的时候按照补码来计算和操作,打印出来的是原码,所以需要补码先取反再+1


2. ⼤⼩端字节序和字节序判断

当我们了解了整数在内存中存储后,我们调试看⼀个细节:

#include <stdio.h>
int main()
{
 int a = 0x11223344;
 
 return 0;
}

我们发现,这个数字是按照字节为单位,倒着存储的。这是为什么呢?

2.1 什么是⼤⼩端?

我们存储数据有3种方法:


由于我们存进去的,我们就会怎么拿出来,所以乱序存储方法不合适

我们就采用前面2种。

数字是倒置存储的,数据在内存中存储的方式是二进制,但是在vs的内存窗口上展示的是16进制

其实超过⼀个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为⼤端字节序存储和⼩端字节序存储,下⾯是具体的概念:

⼤端(存储)模式:是指数据的低位字节内容保存在内存的⾼地址处,⽽数据的⾼位字节内容,保存在内存的低地址处

⼩端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,⽽数据的⾼位字节内容,保存在内存的⾼地址处

2.2 为什么有⼤⼩端?

为什么会有⼤⼩端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着⼀个字节,⼀个字节为8 bit 位,但是在C语⾔中除了8 bit 的 char 之外,还有16 bit 的short 型,32 bit 的 long 型(要看具体的编译器),另外,对于位数⼤于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度⼤于⼀个字节,那么必然存在着⼀个如何将多个字节安排的问题。因此就导致了⼤端存储模式和⼩端存储模式。

例如:⼀个 16bit 的 short 型 x ,在内存中的地址为 0x0010 , x 的值为 0x1122 ,那0x11 为⾼字节, 0x22 为低字节。对于⼤端模式,就将 0x11 放在低地址中,即 0x0010 中0x22 放在⾼地址中,即 0x0011 中。⼩端模式,刚好相反。我们常⽤的 X86 结构是⼩端模式⽽KEIL C51 则为⼤端模式。很多的ARM,DSP都为⼩端模式。有些ARM处理器还可以由硬件来选择是⼤端模式还是⼩端模式。

2.3 练习

2.3.1 练习1

2.3.1.1 题目

请简述⼤端字节序和⼩端字节序的概念,设计⼀个⼩程序来判断当前机器的字节序。

2.3.1.2 思路

我们以1举例,判断编译器的存储方式(博主的是VS2020),我们只需要知道第一个字节是不是0就可以判断使大端还是小段了。


2.3.1.3 方法1

#include <stdio.h>
int main()
{
	int a = 1;
	if ((*(char*)&a) == 1)
	{
		printf("小端\n");
	}
	else
		printf("大端\n");
	return 0;
}

2.3.1.4 方法2(函数实现)

#include<stdio.h>
int check_sys()
{
	int a = 1;
return (*(char*)&a);
}
int main()
{
	int a = 1;
	if (check_sys() == 1)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	return 0;
}

2.3.2 练习2

2.3.2.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;
}

输出结果是什么?

2.3.2.2 思路

#include <stdio.h>
int main()
{
 char a= -1;//char类型8个比特位
//10000000 00000000 00000000 00000001---原码
//11111111 11111111 11111111 11111110---反码
//11111111 11111111 11111111 11111111---补码
//截断--->11111111---a
//整型提升---以符号位为依据进行提升,无符号数,高位补0
//11111111 11111111 11111111 11111111---补码
//10000000 00000000 00000000 00000000---反码
//10000000 00000000 00000000 00000001---原码
//-1---a
 signed char b=-1;//有符号整型
//10000000 00000000 00000000 00000001---原码
//11111111 11111111 11111111 11111110---反码
//11111111 11111111 11111111 11111111---补码
//截断--->11111111---b
//11111111 11111111 11111111 11111111---补码
//10000000 00000000 00000000 00000000---反码
//10000000 00000000 00000000 00000001---原码
//-1---b
 unsigned char c=-1;
//10000000 00000000 00000000 00000001---原码
//11111111 11111111 11111111 11111110---反码
//11111111 11111111 11111111 11111111---补码
//截断--->11111111---c
//00000000 00000000 00000000 11111111---补码/反码/原码(>0)
//255---c
 printf("a=%d,b=%d,c=%d",a,b,c);//%d--打印10进制的有符号整型
 return 0;
}

2.3.2.3 代码验证

2.3.3 练习3

2.3.3.1 题目

#include <stdio.h>
int main()
{
 char a = -128;
 printf("%u\n",a);
 return 0;
}
#include <stdio.h>
int main()
{
 char a = 128;
 printf("%u\n",a);
 return 0;
}

输出分别是什么?

2.3.3.2 思路

#include <stdio.h>
int main()
{
 char a = -128;//有符号的char类型,高位是符号位
//10000000 00000000 00000000 10000000---原码
//11111111 11111111 11111111 01111111---反码
//11111111 11111111 11111111 10000000---补码
//截断--->10000000---a
//整型提升
//11111111 11111111 11111111 10000000---原码/反码/补码
//打印无符号整型---> >=0
 printf("%u\n",a);//%u打印无符号整型
 return 0;
}
#include <stdio.h>
int main()
{
 char a = 128;//有符号的char类型,高位是符号位
//00000000 00000000 00000000 10000000---原码
//01111111 11111111 11111111 01111111---反码
//01111111 11111111 11111111 10000000---补码
//截断--->10000000---a
//整型提升
//11111111 11111111 11111111 10000000---原码/反码/补码
//打印无符号整型---> >=0
 printf("%u\n",a);
 return 0;
}

2.3.3.3 代码验证

2.3.4 练习4

2.3.4.1 题目

#include <stdio.h>
int main()
{
 char a[1000];
 int i;
 for(i=0; i<1000; i++)
 {
   a[i] = -1-i;
 }
 printf("%d",strlen(a));
 return 0;
}

输出结果是什么?

2.3.4.2 思路

求字符串长度,统计的是\0之前出现的字符个数,\0的ASCLL码值是0,所以只要找到0就好

我们来看看char类型的取值范围:

#include <stdio.h>
int main()
{
 char a[1000];
 int i;
 for(i=0; i<1000; i++)
 {
   a[i] = -1-i;
//-1,-2,-3......-128,127,126......0
//反着转圈
 }
 printf("%d",strlen(a));//255
 return 0;
}

2.3.4.3 代码验证

2.3.5 练习5

2.3.5.1 题目

#include <stdio.h>
unsigned char i = 0;
int main()
{
 for(i = 0;i<=255;i++)
 {
 printf("hello world\n");
 }
 return 0;
}

#include <stdio.h>
int main()
{
 unsigned int i;
 for(i = 9; i >= 0;i++)
{
 printf("%u\n",i);
}
return 0;
}

2.3.5.2 思路

#include <stdio.h>
unsigned char i = 0;//无符号char:0~255
int main()
{
 for(i = 0;i<=255;i++)
 {
 printf("hello world\n");//死循环
 }
 return 0;
}
#include <stdio.h>
int main()
{
 unsigned int I;//无符号char:0~255;>=0恒成立
 for(i = 9; i >= 0;i++)
{
 printf("%u\n",i);
}
return 0;
}

2.3.5.3 代码验证

2.3.6 练习6

2.3.6.1 题目

#include <stdio.h>
int main()
{
 int a[4] = { 1, 2, 3, 4 };
 int *ptr1 = (int *)(&a + 1);
 int *ptr2 = (int *)((int)a + 1);
 printf("%x,%x", ptr1[-1], *ptr2);
 return 0;
}

输出结果是什么?

2.3.6.2 思路


2.3.6.3 代码验证

                  添加#,打印16进制  


2.3.6.4 为什么x86环境下,结果不同?


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

常⻅的浮点数:3.14159、1E10等,浮点数家族包括: float、double、long double 类型。

3.1 练习

浮点型和整型数据在内存中的存储形式和取出方式都不同

我们可以通过练习来看看:

#include <stdio.h>
int main()
{
 int n = 9;
 float *pFloat = (float *)&n;
 printf("n的值为:%d\n",n);
 printf("*pFloat的值为:%f\n",*pFloat);
 *pFloat = 9.0;
 printf("num的值为:%d\n",n);
 printf("*pFloat的值为:%f\n",*pFloat);
return 0;
}

3.2 浮点数的存储

上⾯的代码中, num 和 *pFloat 在内存中明明是同⼀个数,为什么浮点数和整数的解读结果会差别这么⼤?

根据国际标准IEEE(电⽓和电⼦⼯程协会) 754,任意⼀个⼆进制浮点数V可以表⽰成下⾯的形式:

V   =  (−1) ^S ∗ M ∗ 2^E

• (−1)S 表⽰符号位,当S=0,V为正数;当S=1,V为负数

• M 表⽰有效数字,M是⼤于等于1,⼩于2的

• 2^E 表⽰指数位


IEEE 754规定:

对于32位的浮点数,最⾼的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M

对于64位的浮点数,最⾼的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M

3.2.1 浮点数存的过程

前⾯说过, 1≤M<2 ,也就是说,M可以写成 1.xxxxxx 的形式,其中xxxxxx表⽰⼩数部分。在计算机内部保存M时,默认这个数的第⼀位总是1,因此可以被舍去,只保存后⾯的xxxxxx部分。


E为⼀个⽆符号整数(unsigned int)

这意味着,如果E为8位,它的取值范围为0~255;如果E为11位,它的取值范围0~2047

科学计数法中的E是可以出现负数的,所以IEEE 754规定,存⼊内存时E的真实值必须再加上⼀个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。


​​​​​​​

3.2.2 浮点数取的过程

指数E从内存中取出还可以再分成三种情况:

E不全为0或不全为1

这时,浮点数就采⽤下⾯的规则表⽰,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第⼀位的1

E全为0

这时,浮点数的指数E等于1-127(或者1-1023)即为真实值(E+127(1023)之后为0,有效数字M不再加上第⼀位的1,⽽是还原为0.xxxxxx的⼩数。这样做是为了表⽰±0,以及接近于0的很⼩的数字。

E全为1

这时,如果有效数字M全为0,表⽰±⽆穷⼤(正负取决于符号位s)

3.3 题⽬解析

#include <stdio.h>
int main()
{
 int n = 9;//整型存储方式,补码
//00000000 00000000 00000000 00001001---原码/反码/补码

 float *pFloat = (float *)&n;
 printf("n的值为:%d\n",n);//9
 printf("*pFloat的值为:%f\n",*pFloat);
//0 00000000 00000000000000000001001
//E为全0
//(-1)^0 * 0.000000000000000001001 * 2^ -126
//接近0
//%f只打印前6位
//0.000000
 *pFloat = 9.0;
//1001.0
//(-1)^0 * 1.001 * 2^ 3
//S=0
//M=1.001
//E=3---->3+127=130
//01000001000100000000000000000000
 printf("num的值为:%d\n",n);
 printf("*pFloat的值为:%f\n",*pFloat);//9.0
return 0;
}

本次的分享到这里就结束了!!!

PS:小江目前只是个新手小白。欢迎大家在评论区讨论哦!有问题也可以讨论的!

如果对你有帮助的话,记得点赞👍+收藏⭐️+关注➕

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

01目标检测-问题引入

目录 一、目标检测问题定义 二、目标检测过程中的常见的问题 三、目标检测VS图像分类区别 目标检测&#xff1a; 图像分类&#xff1a; 总结&#xff1a; 四、目标检测VS目标分割 目标分割&#xff1a; 目标检测是计算机视觉领域的一个重要任务&#xff0c;旨在从图像或…

[管理与领导-93]:IT基层管理者 - 扩展技能 - 5 - 职场丛林法则 -7- 复杂问题分析能力与复杂问题的解决能力:系统化思维

目录 前言&#xff1a; 一、系统化思维 VS 分解思维 1.1 系统化思维 1.2 分解思维 二、中医与西医思维模式的区别 三、正向闭环/正反馈 VS 负向闭环/负反馈 VS 开环 3.1 开环与管理 3.2 闭环与管理 3.3 生态系统是闭环系统 3.4 团队是一个闭环系统 3.5 正向闭环/正反…

有趣的设计模式——适配器模式让两脚插头也能使用三孔插板

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 场景与问题 众所周知&#xff0c;我们国家的生活用电的电压是220V而笔记本电脑、手机等电子设备的工作压没有这么高。为了使笔记本、手机等设备可以使用220V的生活用电就需…

API(九)基于协程的并发编程SDK

一 基于协程的并发编程SDK 场景&#xff1a; 收到一个请求会并发发起多个请求,使用openresty提供的协程说明&#xff1a; 这个是高级课程,如果不理解可以先跳过遗留&#xff1a; APSIX和Kong深入理解openresty 标准lua的协程 ① 早期提供的轻量级协程SDK ngx.thread ngx…

国内外交通数据集介绍(附参数说明)

国外数据集 NGSIM数据集 NGSIM数据集采集自美国&#xff0c;数据集中包含两条高速公路&#xff08;US-101&#xff0c;I-80&#xff09;及两条城市道路&#xff08;lankershim&#xff0c;peachtree&#xff09;的数据&#xff0c;每条道路的采集时间为45min。数据集中包含包含…

荣耀亲选耳机Wingcloud X5s Pro新品上市:9月15日首次亮相

荣耀亲选耳机Wingcloud X5s Pro以其46dB自适应主动降噪、Hi-Res高保真音质和40小时超长续航的特点而备受期待。首次亮相的新品外观圆润流畅&#xff0c;充满了现代感和时尚气息&#xff0c;无论是冰岛白的典雅大方&#xff0c;还是钛银色的成熟经典&#xff0c;每一个细节显示着…

记录crack某IDE插件过程

声明&#xff1a;本文仅记录学习过程&#xff0c;已对关键位置脱敏处理&#xff0c;未提供任何工具&#xff0c;请支持正版。 反编译jar包 使用cfr进行对插件核心jar包MyBxxxxxx-obfuss.jar进行反编译&#xff0c;在本地生成a.txt。 java -jar cfr-0.152.jar MyBxxxx-obfuss.…

车云一体化数字孪生再跨步!数据「精准反哺」整车定制化开发

汽车智能化竞争焦点&#xff0c;已经从单车智能延伸至云端。 尤其是在软件定义汽车的驱动下&#xff0c;汽车软件开发贯穿整个汽车生命周期。而基于SOA的车云一体化软件开发能力&#xff0c;通过跨车云的服务化架构、数据闭环等&#xff0c;支撑着传统V型瀑布式开发&#xff0…

苹果的市场份额下滑了,事实证明国内能与苹果竞争的只有它

分析机构给出二季度国内600美元以上手机市场的报告&#xff0c;报告指出苹果的市场份额已显著下滑&#xff0c;国产手机品牌占有的市场份额则已取得较大的提升&#xff0c;让人意外的是成功抢走苹果市场份额的仍然是之前的那家国产手机品牌。 据分析机构的数据显示&#xff0c;…

Zabbix监控组件及流程

Zabbix 由5大组件构成 Zabbix Web、Zabbix Server、Zabbix Proxy、Zabbix Database、Zabbix Agent Zabbix监控系统具体监控系统流程如图&#xff1a; Zabbix Web Zabbix Web是基于PHP语言编写的WEB UI界面&#xff0c;展示Zabbix整个监控平台监控数据、配置信息、方便对整个…

医学图像分割:Self-supervised Semantic Segmentation: Consistency over Transformation

论文作者&#xff1a;Sanaz Karimijafarbigloo,Reza Azad,Amirhossein Kazerouni,Yury Velichko,Ulas Bagci,Dorit Merhof 作者单位&#xff1a;University of Regensburg;RWTH Aachen University;Iran University of Science and Technology;Northwestern University;Fraunho…

unity UDP 通信

客户端 接收端 &#xff1a; using System; using System.IO; using System.Collections; using System.Collections.Generic; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine; using UnityEngine.UI;public cla…

轻松剪辑大量视频,批量AI智剪让你省时又省力

在今天的数字时代&#xff0c;视频已经成为了信息传播的主要方式之一。无论是个人用户还是专业人士&#xff0c;都需要对视频进行剪辑以满足各种需求。但是&#xff0c;对于一些需要处理大量视频的情况&#xff0c;传统的剪辑方式往往费时费力。幸运的是&#xff0c;有一种名为…

利用芯片74hc165为单片机增加输入扩展端口proteus仿真arduino

我们前面的博文《输入端口少如何扩展&#xff1f;74hc148或74ls148级联在arduino中实现16转4的应用》介绍了148,148输入后可以立即输出到数码管&#xff0c;可以说它是自带编BCD编码器的。而今天这里我们主要介绍的74hc165是没有编码器&#xff0c;这里我们以proteus为仿真环境…

sqlserver存储过程报错:当前事务无法提交,而且无法支持写入日志文件的操作。请回滚该事务。

现象&#xff1a; 系统出现异常&#xff0c;手动执行过程提示如上。 问题排查&#xff1a; 1.直接执行的过程事务挂起&#xff08;排除&#xff09; 2.重启数据库实例&#xff08;重启后无效&#xff09; 3.过程中套用过程&#xff0c;套用的过程中使用事务&#xff0c;因为…

计算机丢失mfc140u.dll怎么办,mfc140u.dll丢失的解决方法分享

随着科技的飞速发展&#xff0c;计算机已经成为了人们日常生活和工作中不可或缺的工具。然而&#xff0c;在使用计算机的过程中&#xff0c;用户可能会遇到各种问题&#xff0c;其中计算机丢失 mfc140u.dll 无法运行的问题就是一个比较常见的困扰。小编将从以下几个方面对这个问…

Ubuntu22.04配置WiFi

Ubuntu22.04配置WiFi 注意&#xff1a;在/etc/netplan/​下的配置文件&#xff0c;格式一定要正确&#xff0c;否则用sudo netplan try​的时候会报错 一、查看无线网卡的名称 //choice-1 ls /sys/class/net//choice-2 ip a//choice-3 ifconfig -a‍ 二、修改配置文件 文件…

基于JAVA+SSM+微信小程序+MySql的图书捐赠管理系统设计与实现

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 在当今社会&#xff0…

ChatGPT Code Interpreter实用教程,14种方法助你数据分析绘图

目录 1. 设置解释一下上传的文档高难度&#xff1a;根据文档创建10个可视化图表代表不同的数据。 1. 设置 勾选 Advanced data analysis 选择GPT-4&#xff0c;下面已经出现了代码解释器 点击 解释一下上传的文档 Prompt&#xff1a;请用简单的语言&#xff0c;解释一下该…

eMAG、ManoMano、Allegro店铺如何快速出单?自己产号测评的重要性

对于一个新开的店铺而言&#xff0c;首先要做的就是想办法让自己的店铺快速出单&#xff0c;只有有订单了&#xff0c;才能够稳住局势&#xff0c;才能够让自己店铺在市场上有立足的资本。 不过对于一个店铺而言&#xff0c;要想做到快速出单是很难的&#xff0c;尤其是一个新…