ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。
目录[隐藏]

字符集简史
ASCII国际问题
扩展ASCII
双字节字符集
键盘常用ASCII码
ASCII码的算法:
 


  美国信息交换标准代码
  ( American Standard Code for Information Interchange, ASCII )
  在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,象a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了所谓的ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。
  美国标准信息交换代码是由美国国家标准学会(American National Standard Institute , ANSI )制定的,标准的单字节字符编码方案,用于基于文本的数据。起始于50年代后期,在1967年定案。它最初是美国国家标准,供不同计算机在相互通信时用作共同遵守的西文字符编码标准,它已被国际标准化组织(International Organization for Standardization, ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母。
  ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符。其中:
  0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为 8、9、10 和 13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。
  32~126(共95个)是字符(32sp是空格),其中48~57为0到9十个阿拉伯数字;
  65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。 
  同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。
  后128个称为扩展ASCII码,目前许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展 ASCII 码允许将每个字符的第 8 位用于确定附加的 128 个特殊符号字符、外来语字母和图形符号。以下为标准ASCII表:
   Bin Dec Hex 缩写/字符 解释 
00000000 0 00  NUL(null) 空字符  
00000001 1 01 SOH(start of handling) 标题开始 
00000010 2 02 STX (start of text) 正文开始 
00000011 3 03 ETX (end of text) 正文结束 
00000100 4 04 EOT (end of transm-ission) 传输结束 
00000101 5 05 ENQ (enquiry) 请求 
00000110 6 06 ACK (acknow-ledge) 收到通知 
00000111 7 07 BEL (bell) 响铃 
00001000 8 08 BS (backsp-ace) 退格 
00001001 9  09 HT (horizon-tal 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 (device control 1)  设备控制1 
00010010 18 12  DC2 (device control 2) 设备控制2 
00010011 19  13 DC3 (device control 3)  设备控制3 
00010100 20 14  DC4 (device control 4) 设备控制4  
00010101 21 15  NAK (negati-ve acknowl-edge)  拒绝接收  
00010110 22 16  SYN (synchr-onous idle)  同步空闲 
00010111 23  17 ETB (end of trans. block) 传输块结束  
00011000 24  18 CAN (cancel)  取消  
00011001 25  19 EM (end of medium) 介质中断  
00011010 26  1A SUB (substit-ute) 替补 
00011011 27  1B ESC (escape)  溢出 
00011100 28  1C FS (file separat-or)  文件分割符 
00011101 29  1D GS (group separat-or)  分组符 
00011110 30  1E  RS (record separat-or)  记录分离符 
00011111 31  1F US (unit separat-or) 单元分隔符 
00100000 32  20  空格  
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码的大小规则:0~9<A~Z<a~z
  1)数字比字母要小。如 “7”<“F”; 
  2)数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ; 
  3)字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
  4)同个字母的大写字母比小写字母要小32。如“A”<“a” 。
  记住几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48。
  另外还有128-255的ASCII字符
[编辑本段]字符集简史
  6000年前 象形文字
  3000年前 字母表
  1838年到1854年 Samuel F. B. Morse发明了电报,字母表中的每个字符对应于一系列短的和长的脉冲
  1821年到1824年 Louis Braille发明盲文,6位代码,它把字符、常用字母组合、常用单字和标点进行编码。
  一个特殊的escape代码表示后续的字符代码应解释为大写。一个特殊的shift代码允许后续代码被解释为数字。
  1931年 CCITT标准化Telex代码,包括Baudot #2的代码,都是包括字符和数字的5位代码。
  1890年 早期计算机的字符码是从Hollerith卡片,6位字符码系统BCDIC(Binary-Coded Decimal Interchange Code:二进制编码十进制交换编码)
  60年代 扩展为8位EBCDIC,IBM大型主机的标准
  1967年 美国信息交换标准码(ASCII:American Standard Code for Information Interchange)
  在字符长度是6位、7位还是8位的问题上产生了很大的争议。从可靠性的观点来看不应使用替换字符,
  因此ASCII不能是6位编码,但由于费用的原因也排除了8位版本的方案(当时每位的储存空间成本仍很昂贵)。
  这样,最终的字符码就有26个小写字母、26个大写字母、10个数字、32个符号、33个句柄和一个空格,总共128个字符码。
  ASCII现在记录在ANSI X3.4-1986字符集-用于信息交换的7位美国国家标准码(7-Bit ASCII:7-Bit American National 
  Standard Code for Information Interchange),由美国国家标准协会(American National Standards Institute)发布。
  图2-1中所示的ASCII字符码与ANSI文件中的格式相似。
[编辑本段]ASCII国际问题
  ASCII是美国标准,所以它不能良好满足其它讲英语国家的需要。例如英国的英镑符号(£)在哪里?
  拉丁语字母表重音符号
  使用斯拉夫字母表的希腊语、希伯来语、阿拉伯语和俄语。
  汉字系统的中国象形汉字,日本和朝鲜。
  1967年,国际标准化组织(ISO:International Standards Organization)推荐一个ASCII的变种,
  代码0x40、0x5B、0x5C、0x5D、0x7B、0x7C和0x7D“为国家使用保留”,而代码0x5E、0x60和0x7E标为
  “当国内要求的特殊字符需要8、9或10个空间位置时,可用于其它图形符号”。这显然不是一个最佳的国际解决方案,
  因为这并不能保证一致性。但这却显示了人们如何想尽办法为不同的语言来编码的。
[编辑本段]扩展ASCII
  1981年 IBM PC ROM256个字符的字符集,即IBM扩展字符集
  1985年11 Windows字符集被称作“ANSI字符集”,遵循了ANSI草案和ISO标准(ANSI/ISO 8859-1-1987,简“Latin 1”。
  ANSI字符集的最初版本:
  1987年4月代码页437,字符的映像代码,出现在MS-DOS 3.3
[编辑本段]双字节字符集
  双字节字符集(DBCS:double-byte character set),解决中国、日本和韩国的象形文字符和ASCII的某种兼容性。
  DBCS从256代码开始,就像ASCII一样。与任何行为良好的代码页一样,最初的128个代码是ASCII。
  然而,较高的128个代码中的某些总是跟随着第二个字节。
  这两个字节一起(称作首字节和跟随字节)定义一个字符,通常是一个复杂的象形文字。
[编辑本段]键盘常用ASCII码
  ESC键 VK_ESCAPE (27)
  回车键: VK_RETURN (13)
  TAB键: VK_TAB (9)
  Caps Lock键: VK_CAPITAL (20)
  Shift键: VK_SHIFT (16)
  Ctrl键: VK_CONTROL (17)
  Alt键: VK_MENU (18)
  空格键: VK_SPACE (32)
  退格键: VK_BACK (8)
  左徽标键: VK_LWIN (91)
  右徽标键: VK_LWIN (92)
  鼠标右键快捷键:VK_APPS (93) 
  Insert键: VK_INSERT (45)
  Home键: VK_HOME (36)
  Page Up: VK_PRIOR (33)
  PageDown: VK_NEXT (34)
  End键: VK_END (35)
  Delete键: VK_DELETE (46)
  方向键(←): VK_LEFT (37)
  方向键(↑): VK_UP (38)
  方向键(→): VK_RIGHT (39)
  方向键(↓): VK_DOWN (40)
  F1键: VK_F1 (112)
  F2键: VK_F2 (113)
  F3键: VK_F3 (114)
  F4键: VK_F4 (115)
  F5键: VK_F5 (116)
  F6键: VK_F6 (117)
  F7键: VK_F7 (118)
  F8键: VK_F8 (119)
  F9键: VK_F9 (120)
  F10键: VK_F10 (121)
  F11键: VK_F11 (122)
  F12键: VK_F12 (123)
  Num Lock键: VK_NUMLOCK (144)
  小键盘0: VK_NUMPAD0 (48)
  小键盘1: VK_NUMPAD0 (49)
  小键盘2: VK_NUMPAD0 (50)
  小键盘3: VK_NUMPAD0 (51)
  小键盘4: VK_NUMPAD0 (52)
  小键盘5: VK_NUMPAD0 (53)
  小键盘6: VK_NUMPAD0 (54)
  小键盘7: VK_NUMPAD0 (55)
  小键盘8: VK_NUMPAD0 (56)
  小键盘9: VK_NUMPAD0 (57)
  小键盘.: VK_DECIMAL (46)
  小键盘*: VK_MULTIPLY (42)
  小键盘+: VK_ADD (43)
  小键盘-: VK_SUBTRACT (45)
  小键盘/: VK_DIVIDE (47)
  Pause Break键: VK_PAUSE (19)
  Scroll Lock键: VK_SCROLL (145)
[编辑本段]ASCII码的算法:
  A在ascii中定义为01000001,也就是十进制65,有了这个标准后,当我们输入A时,计算机就可以通过ascii码知道输入的字符的二进制编码是01000001。而没有这样的标准,我们就必须自己想办法告诉计算机我们输入了一个A;没有这样的标准,我们在别的机器上就需要重新编码以告诉计算机我们要输入A。ascii码指的不是十进制,是二进制。只是用十进制表示习惯一点罢了,比如在ascii码中,A的二进制编码为01000001,如果用十进制表示是65,用十六进制表示就是41H。
参考资料: http://baike.baidu.com/view/15482.htm?fr=ala0_1_1

你可能感兴趣的:(ASIC,standards,扩展,scroll,delete,ibm,insert)