资源简介 (共25张PPT)C 语言程序设计2023翻转课堂实用教程第1章什么是编程语言1.1二进制、八进制和十六进制1.2数据在内存中怎样存储1.3计算机的编码问题1.4数据、内存和程序的关系1.51.1 什么是编程语言人与计算机怎样交流?人与人之间通过“自然语言”交流人与计算机之间怎么交流?编程语言常用编程语言及主要用途编程语言 主要用途C/C++ C/C++主要用于PC软件开发、Linux开发、游戏开发、单片机和嵌入式系统Java 用于网站后台开发、Android 开发、PC软件开发,近年来又涉足了大数据领域(归功于 Hadoop 框架的流行)C# 用于 Windows 平台的软件开发,以及少量的网站后台开发。Python 用于系统运维、网站后台开发、数据分析、人工智能、云计算等领域PHP PHP 主要用来开发网站后台程序。JavaScript 最初只能用于网站前端开发,近年来由于 Node.js 的流行,JavaScript 在网站后台开发中也占有了一席之地Go语言 主要用于服务器端的编程,对 C/C++、Java 都形成了不小的挑战。Objective-C和Swift Objective-C 和 Swift 都只能用于苹果产品的开发,包括 Mac、MacBook、iPhone、iPad、iWatch 等汇编语言 在对效率和实时性要求极高的关键模块才会考虑汇编语言,例如操作系统内核、驱动、仪器仪表、工业控制等C语言什么样子?1C语言的格式和词汇(语法、语义)养成编程思维2例子1-1-1,代码如下:/*在屏幕上显示“我爱编程”*/#includeint main(){ printf(“我爱编程\n”);return 0;}例子1-1-1,运行结果:我爱编程1.2 二进制、八进制和十六进制八进制数一位八进制数可以表示三位二进制数23=8一位十六进制数可以表示四位二进制数24=16十六进制为什么使用八进制和十六进制?二进制数 1111 1111 1111 1111十六进制 FFFF二进制数 001 111 111 111 111 111八进制 177777方便、简单1.2.1 二进制PK逢2进1二进制加法借1当2二进制减法0111100 -=011 -=1101100101 -=011 -=0110111111000-1不够减,向高位借1,当作2使用,2-1为1被低位借走1后,当前位就不够减了,还得再向高位借1,当作2使用,1+2-1-1为1被低位借走1后,当前位剩下0,0-0为0当前位本来就不够减,还被低位借走1,所以得向高位借1,借到之后当作2使用,2-1-1为01.2.2 八进制PK逢8进1八进制加法借1当8八进制减法1.2.3 十六进制PK逢16进1十六进制加法借1当16十六进制减法1.3 数据在内存中怎样存储位和字节8个元器件看做一个单位,例如 1,用 00000001表示1个元器件称为1比特(Bit)或1位8个元器件称为1字节(Byte)单位换算:1Byte = 8 Bit8×1024个元器件就是1024Byte,简写为1KB1KB = 1024Byte =210Byte 1MB = 1024KB =220Byte1GB = 1024MB =230Byte 1TB = 1024GB =240Byte1PB = 1024TB =250Byte 1EB = 1024PB =260Byte存储单位数据的存储一个元器件有2种状态,0 或者 1内存条是一个非常精密的部件,包含了上亿个电子元器件8个元器件有 28=256 种不同的组合16个元器件有 216=65536 种不同的组合1.4 数据、内存和程序的关系数据和内存的关系从硬盘->内存由CPU处理数据调用过程存在内存,断电消失存在硬盘,永久保存数据存储想一下打开word应用程序之后,数据的调用和存储是怎样的?C语言什么样子?1C语言的格式和词汇(语法、语义)养成编程思维2例子1-1-1,代码如下:/*在屏幕上显示“我爱编程”*/#includeint main(){ printf(“我爱编程\n”);return 0;}例子1-1-1,运行结果:我爱编程什么是虚拟内存?如果内存小,一部分数据就要放回硬盘,用时在调入内存硬盘的读写速度比内存慢很多,反复交换数据会消耗很多时间虚拟内存买大内存,一般4G以上1.5 计算机的编码问题1.5.1 ASCII编码-英文的字符集怎样将文字与二进制对应起来呢?字符集(Character Set)或者字符编码(Character Encoding)字符集为每个字符分配一个唯一的编号,类似于学生的学号,通过编号就能够找到对应的字符。ASCII 是“American Standard Code for Information Interchange”的缩写,中文是“美国信息交换标准代码”1.5.2 GB2312编码和GBK编码对于中国的字符,使用两个字节存储,并且规定每个字节的最高位都是 11、 GB2312 和 GBK 的编码中文版 Windows 都将 GBK 作为默认的中文编码方案2、GBK 编码为了容纳更多的字符,并且要区分两个字节和四个字节3、 GB18030编码GB2312 --> GBK --> GB18030 是中文编码的三套方案例如:字母和汉字在内存中存储的区别(1)对于字母A,它在内存中存储为 01000001;(2)对于汉字中,它在内存中存储为 11010110 11010000。用记事本程序创建一个 txt 文档、在 cmd 或者控制台程序(最常见的C语言程序)中显示汉字、用 Visual Studio 创建的源文件等,使用的都是 GBK 编码。例如:对于常用的中文字符,使用两个字节存储,并且规定第一个字节的最高位是 1,第二个字节的高位最多只能有一个连续的 0(第二个字节的最高位可以是 1 也可以是 0,但是当它是 0 时,次高位就不能是 0 了)对于罕见的字符,使用四个字节存储,并且规定第一个和第三个字节的最高位是 1,第二个和第四个字节的高位必须有两个连续的 0。3、 GB18030编码例如字母A的藏文存储对于藏文,A在内存中的存储为 10000001 00110010 11101111 00110000怎么判断占用了几个字节呢?字符处理软件在处理文本时,从左往右依次扫描每个字节:如果遇到的字节的最高位是 0,那么就会断定该字符只占用了一个字节;如果遇到的字节的最高位是 1,那么该字符可能占用了两个字节,也可能占用了四个字节,所以还要继续往后扫描才能确定;如果第二个字节的高位有两个连续的 0,那么就会断定该字符占用了四个字节;如果第二个字节的高位没有连续的 0,那么就会断定该字符占用了两个字节。当字符占用两个或者四个字节时,GB18030 编码要检测两次,处理效率比 GB2312 和 GBK 都低1.5.3 Unicode字符集一种变长的编码方案,使用 1~6 个字节来存储1、 UTF-8一种固定长度的编码方案,不管字符编号大小,始终使用 4 个字节来存储2、UTF-32介于 UTF-8 和 UTF-32 之间,使用 2 个或者 4 个字节来存储,长度既固定又可变3、 UTF-16Unicode 也称为统一码、万国码,是能统一所有国家的字符编码,定义了全球文字的唯一编号。需要 UTF-8、UTF-16、UTF-32 这几种编码方案将 Unicode 存储到计算机中UTF 是 Unicode Transformation Format 的缩写,意思是“Unicode转换格式”1. UTF-8 的编码规则是:(1)如果只有一个字节,那么最高的比特位为 0,这样可以兼容 ASCII;(2)如果有多个字节,那么第一个字节从最高位开始,连续有几个比特位的值为 1,就使用几个字节编码,剩下的字节均以 10 开头。具体的表现形式为:(1)0xxxxxxx:单字节编码形式,这和 ASCII 编码完全一样,因此 UTF-8 是兼容 ASCII 的;(2)110xxxxx 10xxxxxx:双字节编码形式(第一个字节有两个连续的 1);(3)1110xxxx 10xxxxxx 10xxxxxx:三字节编码形式(第一个字节有三个连续的 1);(4)11110xxx 10xxxxxx 10xxxxxx 10xxxxxx:四字节编码形式(第一个字节有四个连续的 1)。xxx 就用来存储 Unicode 中的字符编号1.5.3 Unicode字符集2. UTF-32UTF-32 是固定长度的编码,始终占用 4 个字节,足以容纳所有的 Unicode 字符,所以直接存储 Unicode 编号即可,不需要任何编码转换。浪费了空间,提高了效率。3.UTF-16UFT-16使用 2 个或者 4 个字节来存储。对于 Unicode 编号范围在 0 ~ FFFF 之间的字符,UTF-16 使用两个字节存储,并且直接存储 Unicode 编号,不用进行编码转换。对于 Unicode 编号范围在 10000~10FFFF 之间的字符,UTF-16 使用四个字节存储,具体来说就是:将字符编号的所有比特位分成两部分,较高的一些比特位用一个值介于 D800~DBFF 之间的双字节存储,较低的一些比特位(剩下的比特位)用一个值介于 DC00~DFFF 之间的双字节存储。4. Unicode编码方案的比较只有 UTF-8 兼容 ASCII,UTF-32 和 UTF-16 都不兼容 ASCII(1) 优点:UTF-8 使用尽量少的字节来存储字符,节省存储空间,省流量。缺点:效率低,不但在存储和读取时都要经过转换,而且在处理字符串时也非常麻烦。字符定位(2)优点:UTF-32 效率高缺点:占用存储空间,网络传输时消耗流量多(3)优点: UTF-16平衡了存储空间和处理效率的矛盾启示:从Unicode字符集想到的(1)无论国家还是个人只有遵守统一的规则,才能有序地交流和发展;(2)做事情都要在遵守基本规则的基础上,进行创新和发展;(3)字符编码是非常严谨的工作,一点差错会导致严重的后果,因此,我们做事要具有工匠精神,精益求精。1.5.4 课堂练习题已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是______。字符A B) 字符a C) 字符e D) 非法的常量2. 设有说明语句:char a='\72';则变量aA) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法【微视频】进制转换及字符编码谢谢观看 展开更多...... 收起↑ 资源预览