第0讲:课程导论,计算机思维

什么是计算机科学?

计算机科学就是解决问题的过程,输入问题,输出解决方案的程序。由于我们使用计算机解决问题,如何表示输入和输出就是我们的第一个问题。


PART 1:数据

计算机如何表示输入和输出?

信息是如何表示为计算机能够理解的形式的?答案是二进制,即使用0和1两个数字表示所有信息。每一位0或1称为一个比特(bit),八个比特称为一个字节(byte)——这是更常用的单位。那么字节如何表示文字?

ASCII码

可以人为为数字、基础拉丁字母和其他常用符号指定一个字节,常用的系统是ASCII码。下面的字节转化为十进制表示(范围为0~127)。

  1. 数字:4857对应09

  2. 大写字母:6590对应AZ

  3. 小写字母:97122对应az

  4. 空格:32对应空格

  5. 标点符号:44对应逗号,46对应句号,33对应感叹号,63对应问号,58对应冒号,59对应分号

  6. 成对符号:34对应双引号,39对应单引号,40~41对应圆括号,91和93对应方括号,123和125对应花括号

  7. 数学符号:43对应+,45对应-,42对应*,47对应/,60~62对应<、=、>,

  8. 其他符号:35对应#,36对应37对应,37对应%,38对应&,64对应@,92对应\,94对应^,95对应_,96对应`,124对应|,126对应~

剩余的一些空位留给了控制符号。但要如何表示其他未包括进来的符号呢?

Unicode

对于其他符号,我们可以采用ASCII的超集——Unicode。Unicode使用多个字节,故通常用十六进制表示(仅展示0000-1FFF)。

  1. 基础拉丁字母(ASCII):0000-007F
  2. 拉丁字母相关:0080–024F,1E00–1EFF
  3. 希腊字母相关:0370–03FF,1F00-1FFF
  4. 修饰附加符号:02B0–036F,1AB0–1AFF,1DC0–1DFF
  5. 其他各种字母:0400-1AAF,1B00-1CFF
  6. 国际音标相关:0250–02AF,1D00–1DBF

Unicode本身十分庞大,可以在网站(◕‿◕)SYMBL中查看。然而,指定一个字符的编码与绘制一个字符是两码事。如何用二进制描述图像?

像素的表示

计算机图像通常是由一个个小正方形单位(称为像素)构成的,所以我们首先要研究如何表示一个像素的颜色和亮度。像素有许多种表示,常见的有RGB和HSV。

对于一个确定的设备来说,它能发出的亮度总落在一个固定的从零开始的区间,因此我们采用相对亮度。

RGB采用了三种特定的颜色——700nm(R),546.1nm(G)和435.8nm(B) ——作为标准,通过它们不同相对亮度的混合表征像素的颜色与亮度。

HSV采用色调(Hue)、饱和度(Saturation)和明度(Value)三个指标。色调代表颜色对应波长在色轮上的角度,饱和度代表颜色与中性灰的差距,明度代表亮度。这就是像素采用三个值表示的原因,它有三个自由度。

将RGB空间沿体对角线(中性灰线)看,可以看到二者的关系。

将像素累积起来得到图片,将图片组合起来得到视频的视觉部分。那么我们怎么表示音频呢?

音频的表示

音频的表示主要有WAV和MIDI。

对于一段音频,我们只需要记录每个最小时间单位上的振幅就可以记录整体。这是WAV。

然而,如果我们舍弃音色,我们可以仿照乐谱来记录音符,时值和音量。这是MIDI。

我们已经涵盖了输入和输出的基本内容,但从输入到输出的过程是怎样的?


PART 2:算法

算法是用于解决问题的固定方法。时间复杂度衡量了代码的效率。

END