C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串能表示的,例如某款语言具有上万个字符(没错就是我现在用的这个语言)。 • 为此,各个国家自己内部提出了自己的编码格式,例如中国大陆推出了 GBK 编码格式表示简体中文的字符,中国的港澳台地区则推出了 BIG-5 编码格式 表示繁体中文的字符,日本又推出了 Shift-JIS 编码格式表示日语的字符…… 再后来,为了促进两岸统一,中国又有了包含同时简体和繁体的 GB18030 编 码,包含了 码,包含了 27484 个汉字。 • 但是随着富连网的普及,很多网站都会跨国访问,如果你的电脑配置为 GBK ,那么看到其他编码格式的网站就会出现乱码。如何统一世界上这么多 文字的编码?所以出现了俗称“万国码”的 Unicode 。他给世界上所有的字符编 码,从英文字母到中文汉字到古埃及象形文字,现在全部都可以用一个 0x000000~0x10FFFF 的整数表示了,是不是很暴力? 暴力解决: UTF-32 65536 的范围内),凭什么为了你 Unicode 就要一下子变成 4 字节才能表示啊!就为了兼容那些几 乎不用的埃及文字? UTF-16 的流行 • 所以 Windows 采用了 UTF-16 编码格式,他的 wchar_t 是 2 字 节的(实际上就是 unsigned short 的类型别名),广为推行。 • 等等,不是说 Unicode 的范围是 0x000000~0x10FFFF 吗?用0 码力 | 162 页 | 40.20 MB | 1 年前3
Hello 算法 1.0.0b4 C++版. . . . . . . . . . . . . . . . . . . . 39 3.3. 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 3.4. 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . 字符 char 2 bytes / 1 byte 0 216 − 1 0 布尔 bool 1 byte false true false � 字符的占用空间大小取决于编程语言采用的字符编码方法,详见「字符编码」章节。 现代计算机 CPU 通常将 1 字节作为最小寻址内存单元。因此,即使表示布尔量仅需 1 位(0 或 1),它在内存中通常被存储为 1 字节。 那么,基本数据类型与数据结构之 numbers[5]; float decimals[5]; char characters[5]; bool booleans[5]; 3. 数据结构 hello‑algo.com 41 3.3. 数字编码 * � 在本书中,标题带有的 * 符号的是选读章节。如果你时间有限或感到理解困难,建议先跳过, 等学完必读章节后再单独攻克。 3.3.1. 原码、反码和补码 从上一节的表格中我们发现,所0 码力 | 343 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 C++ 版. . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数 // 使用多种基本数据类型来初始化数组 int numbers[5]; float decimals[5]; char characters[5]; bool bools[5]; 3.3 数字编码 * Note 在本书中,标题带有 * 符号的是选读章节。如果你时间有限或感到理解困难,可以先跳过,等学完必 读章节后再单独攻克。 第 3 章 数据结构 hello‑algo.com 560 码力 | 379 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0 C++版. . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数 // 使用多种基本数据类型来初始化数组 int numbers[5]; float decimals[5]; char characters[5]; bool bools[5]; 3.3 数字编码 * � 在本书中,标题带有 * 符号的是选读章节。如果你时间有限或感到理解困难,可以先跳过,等 学完必读章节后再单独攻克。 第 3 章 数据结构 hello‑algo.com 56 3.30 码力 | 378 页 | 17.59 MB | 1 年前3
Hello 算法 1.0.0b5 C++版. . . . . . . . . . . . . . . . . . . . . 52 3.3 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 3.4 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . 数据模型,其用于包 括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常被存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与 // 使用多种基本数据类型来初始化数组 int numbers[5]; float decimals[5]; char characters[5]; bool bools[5]; 3.3 数字编码 * � 在本书中,标题带有的 * 符号的是选读章节。如果你时间有限或感到理解困难,可以先跳过, 等学完必读章节后再单独攻克。 第 3 章 数据结构 hello‑algo.com 54 30 码力 | 377 页 | 30.69 MB | 1 年前3
Hello 算法 1.2.0 简体中文 C++ 版. . . . . . . . . . . . . . . . . . . . . 54 3.3 数字编码 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4 字符编码 * . . . . . . . . . . . . . . . . . . . . . . . . . 数据模型,其用于 包括 Linux 和 macOS 在内的 Unix 64 位操作系统。 ‧ 字符 char 的大小在 C 和 C++ 中为 1 字节,在大多数编程语言中取决于特定的字符编码方法,详见“字 符编码”章节。 ‧ 即使表示布尔量仅需 1 位(0 或 1),它在内存中通常也存储为 1 字节。这是因为现代计算机 CPU 通常 将 1 字节作为最小寻址内存单元。 那么,基本数据类型与数 // 使用多种基本数据类型来初始化数组 int numbers[5]; float decimals[5]; char characters[5]; bool bools[5]; 3.3 数字编码 * Tip 在本书中,标题带有 * 符号的是选读章节。如果你时间有限或感到理解困难,可以先跳过,等学完必 读章节后再单独攻克。 第 3 章 数据结构 www.hello‑algo.com 560 码力 | 379 页 | 18.48 MB | 10 月前3
C++高性能并行编程与优化 - 课件 - 07 深入浅出访存优化(morton code) ?有什么用? • 如 x=x1x2x3, y=y1y2y3 • 则他们的莫顿码: m(x,y)=y1x1y2x2y3x3 • 二维莫顿编码可以把两个长度为 n 的二进制数,交错打包成一个长度 2*n 的二进制数。而莫顿编码的逆运算,就是莫顿解码: • mdec(m1m2m3m4)=(m2m4, m1m3) • 莫顿码的几何意义在于,以 (x,y)=mdec(t) 为参数方程,可以生成一 也是接近的,有利于访存局域性。 • 莫顿码还可用于构建八叉树、 BVH 等,但不是今天的话题。 https://cloud.tencent.com/developer/article/1461134 莫顿编码 (encode) 和解码 (decode) 的实现 morton2d::encode 把 2 个 32 位整数变成一个 64 位整 数 morton3d::encode 把 3 个 21 位整数变成一个0 码力 | 147 页 | 18.88 MB | 1 年前3
面向亿行 C/C++ 代码的静态分析系统设计及实践-肖枭静态分析+代码评审的实践 学习和强调,红线和惩罚,100%的测试 覆盖率,和事后复盘并不够 有经验的程序员也会犯错 对代码提要求很难监督落实 测试更多是验证功能,很难检测编码缺陷 代码的快速变化使质量更难管 生产质量是责任 靠运维和事后复盘善后够吗? 静态分析工具:半智能的代码分析机器人 静态分析辅助代码评审 自动化工具+流程才是未来 Bug! 非研发人员主导,沟通成本高,推动修复周期长 2. 很难形成标准推动研发实施 3. 形成技术债,偿债成本高 1. 代码签入前,研发人员有义务修复问题 2. 测试人员早期加入,更懂项目研发的情况,沟通成本低,加快上线 3. 能逐步形成好的编码规范和最佳实践 检查代码风格问题挺准,但是 我warning都不看,还看这个? 大多数开发人员眼中的静态分析工具 检查逻辑问题好,但耗时长 还挺多误报,想用而不敢用 编译器里的Errors0 码力 | 39 页 | 6.88 MB | 1 年前3
现代C++ 教程:高速上手C++11/14/17/20的发展,使得这门古老而又新颖的语言更加充满活力。 目标读者 1. 本书假定读者已经熟悉了传统 C++ ,至少在阅读传统 C++ 代码上不具备任何困难。换句话说, 那些长期使用传统 C++ 进行编码的人、渴望在短时间内迅速了解现代 C++ 特性的人非常适合 阅读本书; 2. 本书一定程度上介绍了一些现代 C++ 的黑魔法,但这些魔法毕竟有限,不适合希望进阶学习现代 C++ 的读者,本书的定位系现代 auto 类型推导会在auto 类型推导一节中进行介绍。 2.3 类型推导 在传统 C 和 C++ 中,参数的类型都必须明确定义,这其实对我们快速进行编码没有任何帮助,尤 其是当我们面对一大堆复杂的模板类型时,必须明确的指出变量的类型才能进行后续的编码,这不仅拖 慢我们的开发效率,也让代码变得又臭又长。 C++11 引入了 auto 和 decltype 这两个关键字实现了类型推导,让编译器来操心变量的类型。这0 码力 | 83 页 | 2.42 MB | 1 年前3
共 9 条
- 1













