101 - Lecture 5

101 - Lecture 5

一. Alphanumeric characters

1. 字母数字字符

• 计算机处理的数据通常由字母(Letters)、数字(Numbers)以及其他字符(Other characters)(如标点符号punctuation marks)组成。字符需要一种方式来用计算机能理解的二进制表示,这就是字符编码的作用 。

2. 字符的二进制编码

Binary codes of alphanumeric characters

• 由于计算机内部处理所有数据都需要用二进制表示,因此问题是如何将这些字符进行编码。编码的选择可以是任意(arbitrary)的,但关键在于编码的一致性(What matters is consistency),这就需要标准化(standards)。

二. ASCII code

1. 字母数字编码

Alphanumeric codes

• 常用的字符编码包括:

• ASCII码:7位编码(7 bit code)(美国信息交换标准代码),并有扩展(extension)的8位编码(广泛使用well-established)。(American Standard Code for Information interchange)

• EBCDIC码:IBM主机系统中使用的8位编码。

(Extended Binary Coded Decimal Interchange Code)8-bit code.(IBM mainframe computer)

• Unicode:较新的16位编码标准,可编码多达65,000多个字符 。

Recent 16-bit standard. (Up to 216 characters can be encoded)

2. ASCII码表

ASCII code table

• ASCII码是7位编码,因此每个字符的编码(code)可以用两个十六进制数字(two-digit hexadecimal number)表示。表格中的行号和列号分别代表十六进制编码的第一位和第二位 。

前三位二进制数由第一个十六进制数字表示,接下来的四位二进制数由第二个十六进制数字表示

这张图片展示了 ASCII 码表 中的一部分内容,包含一些控制字符的缩写和含义,以及一个用 C 语言写的小程序示例。

ASCII 控制字符:

• NUL (null):空字符。

• SOH (start of heading):头部开始字符,常用于通信中的控制。

• STX (start of text):文本开始字符,标志文本数据的开始。

• ETX (end of text):文本结束字符,表示文本数据的结束。

• EOT (end of transmission):传输结束字符,用于结束数据传输。

• ENQ (enquiry):询问字符,常用于通信中的状态询问。

• ACK (acknowledge):确认字符,表示确认接收到数据。

• BEL (bell):响铃字符,在早期的计算机终端上会发出哔声提示用户。

铃声示例程序:

• 图片右侧提供了一个 C 语言的小程序,用于触发响铃。代码如下:

#include

void main() {

putchar(7); // 输出 ASCII 编号为 7 的字符 (BEL)

}

• putchar(7) 表示输出 ASCII 编码为 7 的字符,也就是 BEL 字符。当程序运行时,终端将发出响铃(或哔声)。在早期的计算机终端或控制台中,这个字符用于提醒用户。

3. ASCII码的扩展

8位字节(byte)模式的使用情况。一个字节由8位组成,可以表示2的8次方,也就是256种不同的模式或值。然而,实际上只使用了一半的模式,即128种。另一半的模式则被用于8位扩展编码,以表示额外的符号(symbols)、线条形状(line shapes)、外语字母(foreign letters)等。

字母编码的顺序与字母的字母表顺序是一致的(The order of the letter codes is compatible)。也就是说,如果我们将字母按照字母表的顺序排列,那么相应的字母编码也会按照同样的顺序排列。

• 标准ASCII码主要分为两类(classes):

打印字符和控制字符

打印字符(Printing characters)会在屏幕或打印机上生成输

控制字符(Control characters)用于控制输出位置或执行某些动作(如响铃、换行等),以及在计算机和输入输出设备之间传递状态信息

(1) To control the position of output on the screen

or paper (e.g. ‘HT’).

(2) To cause some action to occur (e.g. ‘BEL’).

(3) To communicate status between the computer and an I/O device (e.g. ‘Control-C’ combination)

4. ASCII码的局限性

Limitations of ASCII code

• ASCII码的局限性在于它不能满足现代计算的需求,尤其是在处理国际化字符集(international character sets)时。

例如,现代的基于Windows的文字处理软件(Windows-based word-processors)需要能够处理更多的字符,而8位的ASCII扩展只能处理256个字符,这对于某些语言(如中文、日文等)是不够的 。

三. Unicode

Unicode Standard (1991) is an 16-bit international encoding system for information interchange.

• Unicode标准是在1991年引入的,它使用16位编码,可以表示超过65,000个字符。Unicode不仅包括欧洲字母(alphabetic scripts),还包括中东从右到左的书写系统、亚洲和非洲的文字、以及中国和日本的象形字符(ideographic characters)。Unicode也涵盖了标点符号(punctuation marks)、数学符号(mathematical symbols)、几何形状(geometrical shapes)等 。

1. Java中的Unicode

• 在Java编程中,显示中文等字符时,必须使用这些字符的Unicode表示形式(representations)。例如,可以通过Unicode在Java程序中处理多种语言的文本 。

四. Representation of numbers

数字的表示

• 在计算机中,数字的表示不仅要能够支持整数(with no fraction part),还要支持实数(带有小数部分的数字extend beyond the decimal point)。

整数的表示 Representation of integers

整数的表示:

• 通常使用4字节(bytes),即32位(bits)来表示一个整数。每个字节包含8bits两种补码(Two’s complement)的用途:

• 这是一种表示和操作(manioulating)负整数的方法。在这种方式中,最高位(最左边的位)通常用作符号位,0表示正数,1表示负数。

这种表示方法的优势包括简化了计算机中的加法和减法操作,因为相同的加法逻辑可以应用于正数和负数,无需额外的运算逻辑来处理符号。

实数的表示 Representation of integers

• IEEE 754标准是目前最广泛使用的浮点数计算(floating-point computation)标准,用于表示实数。它定义了浮点数的格式、特殊值(special values)的表示以及一系列对浮点数运算操作的规则 。

五. Declaration of variables in programs

• 当你在程序中声明变量时,编译器会为变量保留(reserve)合适的内存空间(memory space),并根据变量类型使用特定的(encoding)编码/解码(decoding)方案。例如:

• char letter:表示一个字符变量letter,1 byte。char通常用来存储单个字符。

• short count:表示一个短整型变量count,2 bytes。short用于存储较小的整数。

• long world_population:表示一个长整型变量world_population,4 bytes。long用于存储较大的整数。

• long double world_weight:表示一个长双精度浮点数变量world_weight,8 bytes。long double提供比普通double更大的精度和范围,适用于需要非常精确计算的场景。

六. Q&A 问题

最广泛使用的二进制编码:

• 对于非IBM的大型计算机和几乎所有的微型计算机来说,最广泛使用的二进制编码是ASCII。不常用的编码系统:

• 目前不常用的编码系统是Unicode,虽然它广泛应用于现代计算机系统中支持多语言,但在这个选项中被视为不常用。ASCII的一个缺点:

• ASCII的一个缺点是它不能处理英语和欧洲语言以外的某些语言的字符。ASCII被分为哪两类代码?:

• ASCII被分为控制字符和可打印字符两大类。最广泛使用的浮点计算标准:

• 最广泛使用的浮点计算标准是IEEE 754。声明变量时会发生什么:

• 声明变量时,系统会为变量分配内存空间,并可能初始化变量(取决于语言和上下文)。

相关推荐

什么笑什么什么的成语
投标保证金多久能退回来
阴阳师人面树退治全攻略 人面树退治怎么玩
挪威创新电池将如何改变电动汽车行业?自我修复与环保不再是梦!