C语言数据在内存中的存储超详解
文章目录
- 1. 整数在内存中的存储
- 2. 大小端字节序和字节序判断
- 2. 1 什么是大小端?
- 2. 2 为什么会有大小端?
- 2. 3 练习
- 3. 浮点数在内存中的存储
- 3. 1 一个代码
- 3. 2 浮点数的存储
- 3. 2. 1 浮点数存的过程
- 3. 2. 2 浮点数取的过程
- 3. 3 题目解析
1. 整数在内存中的存储
在操作符的博客中,我们就了解过了下面的内容:
- 整数的二进制表示方法有三种,即原码、反码和补码,有符号的整数,三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表 示“负”,最高位的一位是被当做符号位,剩余的都是数值位。
- 正整数的原、反、补码都相同。
负整数的三种表示方法各不相同。 - 原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码
反码:将原码的符号位不变,其他位依次按位取反就可以得到反码
补码:反码+1就得到补码。
实际上对于整形来说:数据存放在内存中的是补码。
为什么呢?
在计算机系统中,数值一律用补码来表示和存储。
原因在于,使用补码,可以将符号位和数值域统一处理。
同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是
相同的,不需要额外的硬件电路。
关于 其运算过程是相同的 这一点:正整数不必赘述,负数的补码是原码取反+1,如果要从补码得到原码的操作应该是-1再取反,但实际上由于是二进制,取反+1也能得到原码,因此说补码和反码的转换是相同的。
2. 大小端字节序和字节序判断
在了解了数据整数在内存中的存储之后,我们通过调试来看一个细节:
来看这个代码:
#include<stdio.h>
int main()
{int a = 0x11223344;return 0;
}
这里给int
变量a
赋值了八进制的 11223344
,那它在内存中是这么存储的吗?我们来看一看:
调试的时候,我们可以看到在a
中的 0x11223344
这个数字是按照字节为单位,倒着存储的。这是为什么呢?
2. 1 什么是大小端?
其实超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储,下面是具体的概念:
大端(存储)模式:
是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。
小端(存储)模式:
是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。
也就是说:倒着存储的,就是小端字节序。
2. 2 为什么会有大小端?
为什么会有大小端模式之分呢?
这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit
位,但是在C语言中除了8bit
的 char
之外,还有16bit
的 short
型,32bit
的 long
型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就导致了大端存储模式和小端存储模式。
例如:-个 16bit
的 short
型x
,在内存中的地址为 0x0010
,x
的值为 0x1122
,那么0x11
为高字节,0x22
为低字节。对于大端模式,就将 0x11 放在低地址即 0x0010 中,0x22 放在高地址即 0x0011
中。小端模式则刚好相反。我们常用的 X86
结构是小端模式,而KEIL C51 则为大端模式。很多的ARM,DSP都为小端模式。有些ARM处理器还可以由硬件来选择是大端模式还是小端模式。
2. 3 练习
练习一
请简述大端字节序和小端字节序的概念,设计个小程序来判断当前机器的字节序。(10分)-百度笔试题
怎么来判断当前机器的字节序呢?既然是程序,那当然不能通过调试来看。
我们可以想一想 int 类型和 char 类型来判断:
#include<stdio.h>int check()
{int a = 1;return *(char*)&a;
}int main()
{if (check())printf("小端");elseprintf("大端");return 0;
}
下面我们来分析一下这个 check
程序的原理:
如果说机器是小端存储的,那么它在内存中就是:
01 00 00 00
而 &a
得到的是 a
的这4个字节的第一个字节的地址,也就是 01
这个字节,将其强制类型转换为 char*
再解引用,得到的就是 1
。
如果是小段字节序,得到的就是0
。
那么除了用这样的办法以外,我们还可以使用联合体这一自定义结构:
#include<stdio.h>int check()
{union c{int a;char b;}tmp;tmp.a = 1;return tmp.b;
}int main()
{if (check())printf("小端");elseprintf("大端");return 0;
}
这里简要介绍一下联合体,它和结构体一样都是C语言提供的自定义类型,创建与使用都十分地相似,不同之处在于:联合体中的每一个变量都是存储在同一个地址中的。也就是说,上面这个联合体的 a
变量有4个字节,而另一个 变量 b
就是 a
的第一个字节,那么新的 check
函数和上面的 check
函数的原理和结果都是相同的。
练习二
#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
类型是有符号还是无符号的?事实上这取决于编译器,但大多数的编译器,包括VS2022 ,char == signed char
。
我们继续分析:
-1的补码很容易算,是
11111111111111111111111111111111
那么在将其赋值给不同的 char
类型变量时,会把内存中的第一个字节的内容,也就是
11111111
赋值过去,所以a,b,c
三个变量存储的都是这个。
当 a
在打印时,使用了%d
占位符要发生整形提升,而且a
是有符号的类型,发生整形提升时,高位补原来的最高位,也就是1:
11111111111111111111111111111111
再进行打印,就是-1。
b与a同理。
我们再来看c,c是无符号类型,发生整形提升时,高位补0,得到的就是:
00000000000000000000000011111111
再进行打印,就是255。
所以这个代码的运行结果是:
练习三
//代码一
#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;
}
这两段代码的输出结果分别是什么?
代码一:
-128的反码是
11111111111111111111111110000000
那么放入a
的就是
10000000
%u
是unsigned int
,所以要发生整形提升。a
是有符号的,高位补1,就是
11111111111111111111111110000000
那么代码一的结果就是将这个数以无符号的形式打印出来。
也就是:
代码二:
128的反码和原码相同,也就是:
00000000000000000000000010000000
那么放入 a
的就是
10000000
再进行整形提升,就是:
11111111111111111111111110000000
把这个数按照 %u
的格式打印出来就是结果了:
练习四
#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;
}
提示:'\0'
的ASCII码值为0
。
要计算出哪一个位置会得到0,我们先要算出如果a[i]
是 0 ,等号右边应该是什么样的数:
a[i]
是char
变量,取的是-1-i
在内存中的的最后一个字节的内容,很显然 -1-i
恒为负数,那么最后一个字节的内容如果是:00000000
,那么在原码中,最后一个字节的内容应该是:00000000
,最大的满足这个的原码是:10000000000000000000000100000000
,也就是-256,那么此时的i
就是255,所以a
的长度应该是255.
练习五:
//代码一
#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;
}
代码一
i<=255
是恒成立的,为什么?
unsigned char
类型的最大值是255,如果此时再+1,就会变成多少呢?
我们通过一个代码来测试:
#include<stdio.h>
int main()
{unsigned char a = 255;a++;printf("%d", a);return 0;
}
可以看到,此时a
又变成了 unsigned char
的最小值0。
那么上面的循环就是一个死循环,会不停地打印hello world
。
代码二
unsigned int
的取值范围最小为0,再-1会变成什么呢?
我们还是通过一个代码来分析:
#include<stdio.h>
int main()
{unsigned int a = 0;a--;printf("%u", a);//注意使用 %u 占位符return 0;
}
可以看到,a
变成了 unsigned int
的最大值,所以上面的循环也是一个死循环,会不停地打印 i
的值。
练习六
#include <stdio.h>
//X86环境 小端字节序
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;
}
关于ptr1
,在指针系列中我已经讲解过,这里只做简要说明,不明白可以看我的指针系列文章,&a+1跳过整个数组,再强制类型转换为int*
,ptr1[-1]
就是取ptr1
的上一个数字,也就是 4,按照16进制打印,还是4.
我们重点来看 ptr2
,首先将 a
强制类型转换为int
,这里a
是指数组的首元素的地址,假设是0x00115511
,再+1得到0x00115512
,再强制类型转换为int*
,也就是相对原来的位置,向后走了一个字节,那么此时ptr2
是多少?
我们画图来分析:
那么此时的ptr2就是0x02000000
。
3. 浮点数在内存中的存储
浮点数表示的范围:float.h
中定义
常见的浮点数: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;
}
输出结果为:
上面的代码中, num
和 *pFloat
在内存中明明是同一个数,为什么浮点数和整数的解读结果会差别
这么大?
3. 2 浮点数的存储
要理解这个结果,一定要搞懂浮点数在计算机内部的表示方法。
根据国际标准IEEE(电气和电子工程协会)754,任意一个二进制浮点数V可以表示成下面的形式:
V = (−1) S * M ∗ 2E
其中:
(−1) S 表示符号位,当S=0,V为正数;当S=1,V为负数
M 表示有效数字,M是大于等于1,小于2的
2E 表示指数位
举例来说:
十进制的5.0,写成二进制是 101.0 ,相当于 1.01x2^2。
那么,按照上面V的格式,可以得出S=0,M=1.01,E=2。
十进制的 -5.0,写成二进制是-101.0,相当于-1.01x22。那么,S=1,M=1.01,E=2。
IEEE 754规定:
对于32位的浮点数,最高的1位存储符号位S,接着的8位存储指数E,剩下的23位存储有效数字M
对于64位的浮点数,最高的1位存储符号位S,接着的11位存储指数E,剩下的52位存储有效数字M
float:
double:
3. 2. 1 浮点数存的过程
IEEE754 对有效数字M和指数E,还有一些特别规定。
前面说过,1 ≤ M < 2
,也就是说,M
可以写成1.xxxxxx
的形式,其中 xxxxxx
表示小数部分。
IEEE 754 规定,在计算机内部保存M
时,默认这个数的第一位总是1,因此可以被舍去,只保存后面的xxxxxx
部分。比如保存1.01
的时候,只保存01
,等到读取的时候,再把第一位的1
加上去。这样做的目的,是节省1位有效数字。以32位浮点数为例,留给M
只有23位,将第一位的1舍去以后,等于可以保存24位有效数字。
至于指数E,情况就比较复杂
首先,E
为一个无符号整数(unsigned int
)
这意味着,如果E为8位,它的取借范围为0 ~ 255;如果E为11位,它的取值范围为0 ~ 2047。
但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE754规定,存入内存时E的真实值必须再加上一个中间数,对于8位的E,这个中间数是127
;对于11位的E,这个中间数是1023
。比如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001
。
3. 2. 2 浮点数取的过程
指数E从内存中取出还可以再分成三种情况:
E不全为0或不全为1
这时,浮点数就采用下面的规则表示,即指数E的计算值减去127(或1023),得到真实值,再将有效
数字M前加上第一位的1。
比如:0.5 的二进制形式为0.1,由于规定正数部分必须为1,即将小数点右移1位,则为1.0*2^(-1)
,其阶码为-1+127(中间值)=126,表示为01111110
,而尾数1.0
去掉整数部分为0,补齐0到23位00000000000000000000000
,则其二进制表示形式为:
0 01111110 00000000000000000000000
E全为0
这时,浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第一位的1,而是还
原为0.xxxxxx
的小数。这样做是为了表示±0
,以及接近于0的很小的数字。
E全为1
这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s)
3. 3 题目解析
先看第1环节,为什么 9 还原成浮点数,就成了 0.000000
?
9 以整型的形式存储在内存中,得到如下二进制序列:
0000 0000 0000 0000 0000 0000 0000 1001
首先,将 9的二进制序列按照浮点数的形式拆分,得到第一位符号位s=0,后面8位的指数
E=00000000
,最后23位的有效数字M=000 0000 0000 0000 00001001
。
由于指数E全为0,所以符合E为全0的情况。因此,浮点数V就写成:
V=(-1)^0 x 0.00000000000000000001001x2^(-126)=1.001x2^(-146)
显然,V是一个很小的接近于0的正数,所以用十进制小数表示就是0.000000
。
再看第2环节,浮点数9.0,为什么整数打印是1091567616
首先,浮点数9.0等于二进制的1001.0,即换算成科学计数法是:1.001x2^3
所以:9.0 = (-1)0*(1.001)*23
那么,第一位的符号位S=0,有效数字M等于001后面再加20个0,凑满23位,指数E等于3+127=130,
即10000010
所以,写成二进制形式,应该是S+E+M
,即
0 10000010 001 0000 0000 0000 0000 0000
这个32位的二进制数,被当做整数来解析的时候,就是整数在内存中的补码,原码正是
1091567616
。
谢谢你的阅读,喜欢的话来个点赞收藏评论关注吧!
相关文章:
C语言数据在内存中的存储超详解
文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断2. 1 什么是大小端?2. 2 为什么会有大小端?2. 3 练习 3. 浮点数在内存中的存储3. 1 一个代码3. 2 浮点数的存储3. 2. 1 浮点数存的过程3. 2. 2 浮点数取的过程3. 3 题目解析 1. 整数在内存中的…...
【大模型】【NL2SQL】基本原理
三个输入: prompt 用户输入 数据库表格等信息 sql 语句...
RK3568平台(显示篇)DRM vop驱动程序分析
一.设备树配置 vopb: vopff900000 {compatible "rockchip,rk3399-vop-big";reg <0x0 0xff900000 0x0 0x2000>, <0x0 0xff902000 0x0 0x1000>;interrupts <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>;assigned-clocks <&cru ACLK_VOP0>, &…...
vue3 动态加载组件
//模版调用 <component :is"geticon(item.icon)" />//引入 import { ref, onMounted, markRaw, defineAsyncComponent } from vue;//异步添加icon图标组建 function geticon(params) {const modules import.meta.glob(../components/icons/*.vue);const link …...
Latex on overleaf入门语法
Latex on overleaf入门语法 前言基本结构序言 简单的格式化命令添加注释:%加粗、斜体、下划线有序列表、无序列表 添加图片图片的标题、标签和引用 添加表格一个简单的表格为表格添加边框标题、标签、引用 数学表达式基本的数学命令 基本格式摘要段落、新行章节、分…...
使用Echarts来实现数据可视化
目录 一.什么是ECharts? 二.如何使用Springboot来从后端给Echarts返回响应的数据? eg:折线图: ①Controller层: ②service层: 一.什么是ECharts? ECharts是一款基于JavaScript的数据可视化图标库,提供直观&…...
一文搞懂GIT
文章目录 1. GiT概述1.1 GIT概述1.2 GIT安装 2. GIT组成3. GIT基本命令3.1 基本命令3.2 分支操作3.3 远程操作3.4 标签操作3.5 其他命令 1. GiT概述 1.1 GIT概述 Git 是一个分布式版本控制系统,被广泛应用于软件开发中。 Git 具有众多优点,比如&#…...
jQuery入门(四)案例
jQuery 操作入门案例 一、复选框案例 功能: 列表的全选,反选,全不选功能实现。 实现步骤和分析: - 全选 1. 为全选按钮绑定单击事件。 2. 获取所有的商品项复选框元素,为其添加 checked 属性,属性值为 true。 -…...
揭秘MITM攻击:原理、手法与防范措施
中间人攻击发生时,攻击者会在通讯两端之间插入自己,成为通信链路的一部分。攻击者可以拦截、查看、修改甚至重新定向受害者之间的通信数据,而不被双方察觉。这种攻击常见于未加密的Wi-Fi网络、不安全的HTTP连接或者通过社会工程学手段诱导受害…...
【YOLOv8】一文全解+亮点介绍+训练教程+独家魔改优化技巧
前言 Hello,大家好,我是cv君,最近开始在空闲之余,经常更新文章啦!除目标检测、分类、分隔、姿态估计等任务外,还会涵盖图像增强领域,如超分辨率、画质增强、降噪、夜视增强、去雾去雨、ISP、海…...
创建mvp ubo(uniform buffer object)
创建过程: 创建一个uniform buffer查找buffer memory requirements分配、绑定buffer memorymap buffer memory拷贝mvp data to buffer memoryunmap buffer memory 示例代码: glm::mat4 projection glm::perspective(glm::radians(45.0f), 1.0f, 0.1f…...
1.GPIO
理论说明 输入 上拉输入:拉高电平 下拉输入:拉低电平 浮空输入:不拉高也不拉低电平 输出 开漏输出:不能输出高电平(P-MOS不可用,则只能低电平) 推挽输出:可输出高低电平 输出速率…...
C++必修:STL之vector的了解与使用
✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:C学习 贝蒂的主页:Betty’s blog 1. C/C中的数组 1.1. C语言中的数组 在 C 语言中,数组是一组相同类型…...
【MySQL】索引 【上】 {没有索引的查询/磁盘/mysql与磁盘IO/初识索引}
文章目录 1.没有索引存在的问题2. 认识磁盘MySQL与存储MySQL与磁盘交互基本单位建立共识图解IO认识索引 在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物…...
GO goroutine状态流转
Gidle -> Grunnable newproc获取新的goroutine,并放置到P运行队列中 这也是go关键字之后实际编译调用的方法 func newproc(fn *funcval) {// 获取当前正在运行中的goroutinegp : getg()// 获取调用者的程序计数器地址,用于调试和跟踪pc : getcallerp…...
DLMS/COSEM中的信息安全:DLMS/COSEM安全概念(上)
DLMS/COSEM中的信息安全描述并规定: ——DLMS/COSEM安全概念; ——选择加密算法; ——安全密钥; ——使用加密算法进行实体认证、xDLMS APDU保护和COSEM数据保护。 1.综述 DLMS/COSEM服务器的资源(COSEM对象属性和方法)可以由在应用连接内的DLMS/COSEM客户机访问。 在AA…...
C语言第九天笔记
数组的概念 什 么是数组 数组是 相同类型, 有序数据的集合。 数 组的特征 数组中的数据被称为数组的 元素,是同构的 数组中的元素存放在内存空间里 (char player_name[6]:申请在内存中开辟6块连续的基于char类 型的变量空间) 衍生概念&…...
智慧环卫可视化:科技赋能城市清洁管理
图扑智慧环卫可视化通过实时监控、数据分析和智能调度,提高环卫作业效率,优化资源配置,提升城市清洁水平,实现城市管理的精细化和现代化。...
【力扣】SQL题库练习5
高级查询和连接 1341.电影评分 表:Movies ------------------------ | Column Name | Type | ------------------------ | movie_id | int | | title | varchar | ------------------------ movie_id 是这个表的主键(具有唯一值的列)。 ti…...
永结无间Ⅸ--你不需要LLM Agent
人们将目光锁定在下一个闪亮的事物上。FOMO 是人性的一部分。这也适用于企业。就像数据科学成为每个企业分析功能的热潮一样,Agentic Architecture 是大多数 AI 雷达上的热门目标。 但您是否考虑过您是否真的需要它? 实际情况是,您不需要 A…...
Simulink|基于粒子群算法的永磁同步电机多参数辨识
目录 主要内容 模型研究 结果一览 下载链接 主要内容 仿真程序参考文献《改进粒子群算法的永磁同步电机多参数辨识》,采用粒子群算法与simulink模型结合的方式,对永磁同步电机进行多参数辨识。程序以定子绕组电阻、d轴电感、q轴电感和永磁…...
程序如何自动点击亚马逊商户后台的“邀请评论”按钮
要在亚马逊上自动点击“邀请评论”按钮,可以使用自动化脚本来实现。由于你希望自动化操作,我提供一个示例代码,使用 Selenium WebDriver 来执行这个任务。Selenium 是一个流行的浏览器自动化工具,能够模拟用户操作,例如…...
大模型算法面试题(十八)
本系列收纳各种大模型面试题及答案。 1、P-tuning v2 思路、优缺点是什么 P-tuning v2是清华大学自然语言处理实验室(THUDM)等研究机构提出的一种新的预训练模型优化方法,主要关注如何通过动态构建任务相关的提示序列来引导预训练模型进行更…...
手机在网状态接口如何对接?(二)
一、什么是手机在网状态? 传入手机号码,查询该手机号的在网状态,返回内容有正常使用、停机、在网但不可用、不在网(销号/未启用/异常)、预销户等多种状态。 二、手机在网状态使用场景? 1.用户验证与联系…...
力扣-3232. 判断是否可以赢得数字游戏
给你一个 正整数 数组 nums。 Alice 和 Bob 正在玩游戏。在游戏中,Alice 可以从 nums 中选择所有个位数 或 所有两位数,剩余的数字归 Bob 所有。如果 Alice 所选数字之和 严格大于 Bob 的数字之和,则 Alice 获胜。 如果 Alice 能赢得这场游…...
Table SQL connectors以及FileSystem、JDBC connector
目录 Flink支持的连接器 如何使用连接器 FileSystem SQL Connector 文件格式 分区文件 Source 目录监控 元数据 Streaming Sink 滚动策略 文件合并 JDBC SQL Connector 依赖 如何创建JDBC表 连接器配置 案例 pom依赖 代码 测试 Flink的Table API和SQL…...
Animate软件基础:“分散到图层”创建的新图层
FlashASer:AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer:实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer:Animate教程及作品源文件https://zhuanlan.zhihu.co…...
ffmpeg命令-Windows下常用最全
查询命令 参数 说明 -version 显示版本。 -formats 显示可用的格式(包括设备)。 -demuxers 显示可用的demuxers。 -muxers 显示可用的muxers。 -devices 显示可用的设备。 -codecs 显示libavcodec已知的所有编解码器。 -decoders 显示可用…...
反序列化漏洞靶机实战-serial
一.安装靶机 下载地址为https://download.vulnhub.com/serial/serial.zip,安装好后开启靶机,这里并不需要我们去登录,直接扫描虚拟机nat模式下c网段的ip,看看哪个的80端口开放,然后直接去访问 二.查找cookie 访问靶…...
医疗器械产品没有互联网连接,就不适用于网络安全要求吗?
医疗器械产品是否不适用于网络安全要求,需要考虑产品是否具有网络连接功能以进行电子数据交换或远程控制,以及是否采用储存媒介进行电子数据交换。详细解析如下: 一、医疗器械的网络安全要求不仅限于互联网连接 数据交换接口:医疗…...
做调查问卷赚钱网站有哪些/网络营销经典案例
Indent Guides 为每个缩进绘制一条虚线; Highlight all occurrences of selected word 高亮相关代码; Productivity Power Tools 微软官方推出的扩展,标记补全、复制引用、增强的滚动条等,详见《免费的精品: Productivity Power T…...
湖南建设教育网/搜索引擎优化是指什么
前段时间写了许多线段树的题。。现在回顾回顾。。大多是水题。。T_T.. 【BZOJ1798,AHOI2009】 行星序列 Links 这题是JSOI2014Round1的题。。JSOI原题狗。。做法很简单。。但是需要主要标记下传的问题 【BZOJ1018,SHOI2008】 堵塞的交通 Links 这道是不可多得的线段树好题。。…...
温州网站建设制作设计公司/定制网站制作公司
--创建一个person表 create table person( pid number(20), pname varchar2(10) );--添加一列 alter table person add( gender number(1) );--修改列类型 char为定长 alter table person modify( gender char(1) );--修改列名称 gender为sex alter table pers…...
禁止wordpress网站上传图片时自动生成三张图片方法/百度手机seo软件
AUTOSAR_EXP_PlatformDesign - 10 Persistency 【translated by sky8336, 2019.06.09, Shanghai】 10 Persistency 10.1Overview 持久性为自适应平台的应用程序和其他功能集群提供了在自适应机器的非易失性内存中存储信息的机制。数据在启动和点火周期是可获得的。持久性提…...
泉州网站建设泉州/山东关键词优化联系电话
本周主要复习了高数,感觉掌握了忘的比较快,所以在前几天主要是看了知识点,以及书上的例题,后几天就找了一些题做,物理在下周五考,中间的时间间隔较长,所以准备考完高数再复习。 而且上周的模拟考…...
wordpress简体切换/网站推广软文
展开全部大四学生32313133353236313431303231363533e58685e5aeb931333433653933,应该先考研还是工作后再考研?这两种选择,哪一个更实惠?作出选择之前,这3个问题一定要考虑清楚。考虑复习效果一般情况下,多数…...