加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

ASCII编码,可以将英文存储到计算机

发布时间:2023-05-09 08:59:29 所属栏目:语言 来源:
导读:前面我们已经讲到,计算机是以二进制的形式来存储数据的,它只认识 0 和 1 两个数字,我们在屏幕上看到的文字,在存储之前都被转换成了二进制(0和1序列),在显示时也要根据二进制找到对应的字符。

可想而知,特
前面我们已经讲到,计算机是以二进制的形式来存储数据的,它只认识 0 和 1 两个数字,我们在屏幕上看到的文字,在存储之前都被转换成了二进制(0和1序列),在显示时也要根据二进制找到对应的字符。

可想而知,特定的文字必然对应着固定的二进制,否则在转换时将发生混乱。那么,怎样将文字与二进制对应起来呢?这就需要有一套规范,计算机公司和软件开发者都必须遵守,这样的一套规范就称为字符集(Character Set)或者字符编码(Character Encoding)。
严格来说,字符集和字符编码不是一个概念,字符集定义了文字和二进制的对应关系,为字符分配了唯一的编号,而字符编码规定了如何将文字的编号存储到计算机中。我们暂时先不讨论这些细节,姑且认为它们是一个概念,本节中我也混用了这两个概念,未做区分。
字符集为每个字符分配一个唯一的编号,类似于学生的学号,通过编号就能够找到对应的字符。

可以将字符集理解成一个很大的表格,它列出了所有字符和二进制的对应关系,计算机显示文字或者存储文字,就是一个查表的过程。

在计算机逐步发展的过程中,先后出现了几十种甚至上百种字符集,有些还在使用,有些已经淹没在了历史的长河中,本节我们要讲解的是一种专门针对英文的字符集——ASCII编码。
拉丁字母(开胃小菜)
在正式介绍 ASCII 编码之前,我们先来说说什么是拉丁字母。估计也有不少读者和我一样,对于拉丁字母、英文字母和汉语拼音中的字母的关系不是很清楚。

拉丁字母也叫罗马字母,它源自希腊字母,是当今世界上使用最广的字母系统。基本的拉丁字母就是我们经常见到的 ABCD 等26个英文字母。
拉丁字母、阿拉伯字母、斯拉夫字母(西里尔字母)被称为世界三大字母体系。
拉丁字母原先是欧洲人使用的,后来由于欧洲殖民主义,导致这套字母体系在全球范围内开始流行,美洲、非洲、澳洲、亚洲都没有逃过西方文化的影响。中国也是,我们现在使用的拼音其实就是拉丁字母,是不折不扣的舶来品。

后来,很多国家对 26 个基本的拉丁字母进行了扩展,以适应本地的语言文化。最常见的扩展方式就是加上变音符号,例如汉语拼音中的ü,就是在u的基础上加上两个小点演化而来;再如,áà就是在a的上面标上音调。

总起来说:
基本拉丁字母就是 26 个英文字母;
扩展拉丁字母就是在基本的 26 个英文字母的基础上添加变音符号、横线、斜线等演化而来,每个国家都不一样。

ASCII 编码
计算机是美国人发明的,他们首先要考虑的问题是,如何将二进制和英文字母(也就是拉丁文)对应起来。

当时,各个厂家或者公司都有自己的做法,编码规则并不统一,这给不同计算机之间的数据交换带来不小的麻烦。但是相对来说,能够得到普遍认可的有 IBM 发明的 EBCDIC 和此处要谈的 ASCII。

我们先说 ASCII。ASCII 是“American Standard Code for Information Interchange”的缩写,翻译过来是“美国信息交换标准代码”。看这个名字就知道,这套编码是美国人给自己设计的,他们并没有考虑欧洲那些扩展的拉丁字母,也没有考虑韩语和日语,我大中华几万个汉字更是不可能被重视。

ASCII 的标准版本于 1967 年第一次发布,最后一次更新则是在 1986 年,迄今为止共收录了 128 个字符,包含了基本的拉丁字母(英文字母)、阿拉伯数字(也就是 1234567890)、标点符号(,.!等)、特殊符号(@#$%^&等)以及一些具有控制功能的字符(往往不会显示出来)。

在 ASCII 编码中,大写字母、小写字母和阿拉伯数字都是连续分布的(见下表),这给程序设计带来了很大的方便。例如要判断一个字符是否是大写字母,就可以判断该字符的 ASCII 编码值是否在 65~90 的范围内。

EBCDIC 编码正好相反,它的英文字母不是连续排列的,中间出现了多次断续,给编程带来了一些困难。现在连 IBM 自己也不使用 EBCDIC 了,转而使用更加优秀的 ASCII。

ASCII 编码已经成了计算机的通用标准,没有人再使用 EBCDIC 编码了,它已经消失在历史的长河中了。
ASCII 编码一览表
标准 ASCII 编码共收录了 128 个字符,其中包含了 33 个控制字符(具有某些特殊功能但是无法显示的字符)和 95 个可显示字符。

ASCII 编码一览表(淡黄色背景为控制字符,白色背景为可显示字符)
二进制    十进制    十六进制    字符/缩写    解释
00000000    0    00    NUL (NULL)    空字符
00000001    1    01    SOH (Start Of Headling)    标题开始
00000010    2    02    STX (Start Of Text)    正文开始
00000011    3    03    ETX (End Of Text)    正文结束
00000100    4    04    EOT (End Of Transmission)    传输结束
00000101    5    05    ENQ (Enquiry)    请求
00000110    6    06    ACK (Acknowledge)    回应/响应/收到通知
00000111    7    07    BEL (Bell)    响铃
00001000    8    08    BS (Backspace)    退格
00001001    9    09    HT (Horizontal Tab)    水平制表符
00001010    10    0A    LF/NL(Line Feed/New Line)    换行键
00001011    11    0B    VT (Vertical Tab)    垂直制表符
00001100    12    0C    FF/NP (Form Feed/New Page)    换页键
00001101    13    0D    CR (Carriage Return)    回车键
00001110    14    0E    SO (Shift Out)    不用切换
00001111    15    0F    SI (Shift In)    启用切换
00010000    16    10    DLE (Data Link Escape)    数据链路转义
00010001    17    11    DC1/XON
(Device Control 1/Transmission On)    设备控制1/传输开始
00010010    18    12    DC2 (Device Control 2)    设备控制2
00010011    19    13    DC3/XOFF
(Device Control 3/Transmission Off)    设备控制3/传输中断
00010100    20    14    DC4 (Device Control 4)    设备控制4
00010101    21    15    NAK (Negative Acknowledge)    无响应/非正常响应/拒绝接收
00010110    22    16    SYN (Synchronous Idle)    同步空闲
00010111    23    17    ETB (End of Transmission Block)    传输块结束/块传输终止
00011000    24    18    CAN (Cancel)    取消
00011001    25    19    EM (End of Medium)    已到介质末端/介质存储已满/介质中断
00011010    26    1A    SUB (Substitute)    替补/替换
00011011    27    1B    ESC (Escape)    逃离/取消
00011100    28    1C    FS (File Separator)    文件分割符
00011101    29    1D    GS (Group Separator)    组分隔符/分组符
00011110    30    1E    RS (Record Separator)    记录分离符
00011111    31    1F    US (Unit Separator)    单元分隔符
00100000    32    20    (Space)    空格
00100001    33    21    !     
00100010    34    22    "     
00100011    35    23    #     
00100100    36    24    $     
00100101    37    25    %     
00100110    38    26    &     
00100111    39    27    '     
00101000    40    28    (     
00101001    41    29    )     
00101010    42    2A    *     
00101011    43    2B    +     
00101100    44    2C    ,     
00101101    45    2D    -     
00101110    46    2E    .     
00101111    47    2F    /     
00110000    48    30    0     
00110001    49    31    1     
00110010    50    32    2     
00110011    51    33    3     
00110100    52    34    4     
00110101    53    35    5     
00110110    54    36    6     
00110111    55    37    7     
00111000    56    38    8     
00111001    57    39    9     
00111010    58    3A    :     
00111011    59    3B    ;     
00111100    60    3C    <     
00111101    61    3D    =     
00111110    62    3E    >     
00111111    63    3F    ?     
01000000    64    40    @     
01000001    65    41    A     
01000010    66    42    B     
01000011    67    43    C     
01000100    68    44    D     
01000101    69    45    E     
01000110    70    46    F     
01000111    71    47    G     
01001000    72    48    H     
01001001    73    49    I     
01001010    74    4A    J     
01001011    75    4B    K     
01001100    76    4C    L     
01001101    77    4D    M     
01001110    78    4E    N     
01001111    79    4F    O     
01010000    80    50    P     
01010001    81    51    Q     
01010010    82    52    R     
01010011    83    53    S     
01010100    84    54    T     
01010101    85    55    U     
01010110    86    56    V     
01010111    87    57    W     
01011000    88    58    X     
01011001    89    59    Y     
01011010    90    5A    Z     
01011011    91    5B    [     
01011100    92    5C    \     
01011101    93    5D    ]     
01011110    94    5E    ^     
01011111    95    5F    _     
01100000    96    60    `     
01100001    97    61    a     
01100010    98    62    b     
01100011    99    63    c     
01100100    100    64    d     
01100101    101    65    e     
01100110    102    66    f     
01100111    103    67    g     
01101000    104    68    h     
01101001    105    69    i     
01101010    106    6A    j     
01101011    107    6B    k     
01101100    108    6C    l     
01101101    109    6D    m     
01101110    110    6E    n     
01101111    111    6F    o     
01110000    112    70    p     
01110001    113    71    q     
01110010    114    72    r     
01110011    115    73    s     
01110100    116    74    t     
01110101    117    75    u     
01110110    118    76    v     
01110111    119    77    w     
01111000    120    78    x     
01111001    121    79    y     
01111010    122    7A    z     
01111011    123    7B    {     
01111100    124    7C    |     
01111101    125    7D    }     
01111110    126    7E    ~     
01111111    127    7F    DEL (Delete)    删除
上表列出的是标准的 ASCII 编码,它共收录了 128 个字符,用一个字节中较低的 7 个比特位(Bit)足以表示(27 = 128),所以还会空闲下一个比特位,它就被浪费了。

 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章