This commit is contained in:
krahets 2023-03-07 01:15:56 +08:00
parent 479bb17a0e
commit f1fef02568
2 changed files with 30 additions and 9 deletions

View File

@ -2,9 +2,13 @@
comments: true
---
# 3.1.   数据与内存
---
comments: true
---
## 3.1.1.   基本数据类型
# 3.1.   3.1.   数据与内存
## 3.1.1.   3.1.1.   基本数据类型
谈到计算机中的数据我们能够想到文本、图片、视频、语音、3D 模型等等,这些数据虽然组织形式不同,但都是由各种基本数据类型构成的。
@ -12,8 +16,8 @@ comments: true
- 「整数」根据不同的长度分为 byte, short, int, long ,根据算法需求选用,即在满足取值范围的情况下尽量减小内存空间占用;
- 「浮点数」代表小数,根据长度分为 float, double ,同样根据算法的实际需求选用;
- 「字符」在计算机中是以字符集的形式保存的char 的值实际上是数字,代表字符集中的编号,计算机通过字符集查表来完成编号到字符的转换。占用空间与具体编程语言有关,通常为 2 bytes 或 1 byte
- 「布尔」代表逻辑中的“是”与“否”,其占用空间需要具体根据编程语言确定,通常为 1 byte 或 1 bit
- 「字符」在计算机中是以字符集的形式保存的char 的值实际上是数字,代表字符集中的编号,计算机通过字符集查表来完成编号到字符的转换。占用空间通常为 2 bytes 或 1 byte
- 「布尔」代表逻辑中的“是”与“否”,其占用空间需根据编程语言确定,通常为 1 byte 或 1 bit
<div class="center-table" markdown>
@ -84,6 +88,8 @@ $$
<p align="center"> Fig. IEEE 754 标准下的 float 表示方式 </p>
<p align="center"> Fig. IEEE 754 标准下的 float 表示方式 </p>
以上图为例,$\mathrm{S} = 0$ $\mathrm{E} = 124$ $\mathrm{N} = 2^{-2} + 2^{-3} = 0.375$ ,易得
$$
@ -96,12 +102,16 @@ $$
进一步地,指数位 $E = 0$ 和 $E = 255$ 具有特殊含义,**用于表示零、无穷大、$\mathrm{NaN}$ 等**。
<div class="center-table" markdown>
| 指数位 E | 分数位 $\mathrm{N} = 0$ | 分数位 $\mathrm{N} \ne 0$ | 计算公式 |
| ------------------ | ----------------------- | ---------------------------- | ------------------------------------------------------------ |
| $0$ | $\pm 0$ | 次正规数 | $(-1)^{\mathrm{S}} \times 2^{-126} \times (0.\mathrm{N})$ |
| $1, 2, \dots, 254$ | 正规数 | 正规数 | $(-1)^{\mathrm{S}} \times 2^{(\mathrm{E} -127)} \times (1.\mathrm{N})$ |
| $255$ | $\pm \infty$ | $\mathrm{NaN}$ | |
</div>
特别地,次正规数显著提升了小数精度:
- 最小正正规数为 $2^{-126} \approx 1.18 \times 10^{-38}$
@ -204,7 +214,7 @@ $$
```
## 3.1.2. &nbsp; 计算机内存
## 3.1.2. &nbsp; 3.1.2. &nbsp; 计算机内存
在计算机中,内存和硬盘是两种主要的存储硬件设备。「硬盘」主要用于长期存储数据,容量较大(通常可达到 TB 级别)、速度较慢。「内存」用于运行程序时暂存数据,速度较快,但容量较小(通常为 GB 级别)。
@ -216,4 +226,6 @@ $$
<p align="center"> Fig. 内存条、内存空间、内存地址 </p>
<p align="center"> Fig. 内存条、内存空间、内存地址 </p>
**内存资源是设计数据结构与算法的重要考虑因素**。内存是所有程序的公共资源,当内存被某程序占用时,不能被其它程序同时使用。我们需要根据剩余内存资源的情况来设计算法。例如,若剩余内存空间有限,则要求算法占用的峰值内存不能超过系统剩余内存;若运行的程序很多、缺少大块连续的内存空间,则要求选取的数据结构必须能够存储在离散的内存空间内。

View File

@ -29,14 +29,23 @@
/* Center Markdown Tables (requires md_in_html extension) */
.center-table {
text-align: center;
text-align: center;
}
/* Reset alignment for table cells */
.md-typeset .center-table :is(td,th):not([align]) {
/* Reset alignment for table cells */
text-align: initial;
text-align: initial;
}
/* Font size */
.md-typeset {
font-size: 0.75rem;
line-height: 1.5;
}
.md-typeset pre {
font-size: 0.95em;
}
/* Markdown Header */
/* https://github.com/squidfunk/mkdocs-material/blob/dcab57dd1cced4b77875c1aa1b53467c62709d31/src/assets/stylesheets/main/_typeset.scss */
@ -72,5 +81,5 @@ body {
/* max height of code block */
/* https://github.com/squidfunk/mkdocs-material/issues/3444 */
.md-typeset pre > code {
max-height: 30rem;
max-height: 25rem;
}