一、为什么要有ASCII码?

在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等),在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码)。而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

二、什么是ASCII码?

ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。
标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符。

三、ASCII最高位编码带来的问题?

在英语中,用128个符号编码便可以表示所有,但是用来表示其他语言,128个符号是不够的。
比如,在法语中,字母上方有注音符号,它就无法用 ASCII 码表示。于是,一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。比如,法语中的é的编码为130(二进制10000010)。这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号 。
但是,这里又出现了新的问题。不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。
但是不管怎样,所有这些编码方式中,0–127表示的符号是一样的,不一样的只是128–255的这一段

至于亚洲国家的文字,使用的符号就更多了,汉字就多达10万左右。一个字节只能表示256种符号,肯定是不够的,就必须使用多个字节表达一个符号。比如,简体中文常见的编码方式是 GB2312,使用两个字节表示一个汉字,所以理论上最多可以表示 256*256 = 65536 个符号。

四、汉字编码

目前的文字编码标准主要有 ASCII、GB2312、GBK、Unicode等。
ASCII 编码是最简单的西文编码方案。GB2312、GBK、GB18030 是汉字字符编码方案的国家标准。ISO/IEC 10646 和 Unicode 都是全球字符编码的国际标准 。下面对与汉字相关的编码方案GB2312,GBK与GB18030做简要的分析。

GB2312-80 标准
GB2312-80 是 1980 年制定的中国汉字编码国家标准。共收录 7445 个字符,其中汉字 6763 个。GB2312 兼容标准 ASCII码,采用扩展 ASCII 码的编码空间进行编码,一个汉字占用两个字节,每个字节的最高位为 1。具体办法是:收集了 7445 个字符组成 94*94 的方阵,每一行称为一个“区”,每一列称为一个“位”,区号位号的范围均为 01-94,区号和位号组成的代码称为“区位码”。区位输入法就是通过输入区位码实现汉字输入的。将区号和位号分别加上 20H,得到的 4 位十六进制整数称为国标码,编码范围为 0x2121~0x7E7E。为了兼容标准 ASCII 码,给国标码的每个字节加 80H,形成的编码称为机内码,简称内码,是汉字在机器中实际的存储代码GB2312-80 标准的内码范围是 0xA1A1~0xFEFE 。

GBK 编码标准
《汉字内码扩展规范》(GBK) 于1995年制定,兼容GB2312、GB13000-1、BIG5 编码中的所有汉字,使用双字节编码,编码空间为 0x8140~0xFEFE,共有 23940 个码位,其中 GBK1 区和 GBK2 区也是 GB2312 的编码范围。收录了 21003 个汉字。GBK向下与 GB 2312 编码兼容,向上支持 ISO 10646.1国际标准,是前者向后者过渡过程中的一个承上启下的产物。ISO 10646 是国际标准化组织ISO 公布的一个编码标准,即 Universal Multilpe-Octet Coded Character Set(简称UCS),大陆译为《通用多八位编码字符集》,台湾译为《广用多八位元编码字元集》,它与 Unicode 组织的Unicode编码完全兼容。ISO 10646.1 是该标准的第一部分《体系结构与基本多文种平面》。我国 1993 年以 GB 13000.1 国家标准的形式予以认可(即 GB 13000.1 等同于 ISO 10646.1) 。

GB18030编码标准
国家标准GB18030-2000《信息交换用汉字编码字符集基本集的补充》是我国继GB2312-1980和GB13000-1993之后最重要的汉字编码标准,是我国计算机系统必须遵循的基础性标准之一。GB18030-2000编码标准是由信息产业部和国家质量技术监督局在2000年 3月17日联合发布的,并且将作为一项国家标准在2001年的1月正式强制执行。GB18030-2005《信息技术中文编码字符集》是我国制订的以汉字为主并包含多种我国少数民族文字(如藏、蒙古、傣、彝、朝鲜、维吾尔文等)的超大型中文编码字符集强制性标准,其中收入汉字70000余个 [8] 。

五、详细了解ASCII码

ASCII码

ASCII 控制字符 (字符编码: 0-31)
在ASCII码表中,前32个字符是不能用于打印控制的编码,而是用于控制像打印机一样的外围设备。

ASCII 打印字符 (字符编码: 32-127)
32~126(共95个)是字符:32是空格,其中48~57为0到9十个阿拉伯数字,65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。第127个字符表示的是键盘上的删除命令。

C语言中定义了一些字母前加""来表示常见的那些不能显示的ASCII字符,如\0,\t,\n等,就称为转义字符。

六、空字符\0,空格符、制表符\t、换行符\n

空字符一般来描述一个字符串的结尾,其实是控制符的一种,但不能理解为没有字符,应该理解为代表什么都没有的字符。好比回车0x0A和换行Ox0D虽然不显示,但是也是控制字符的一种。
字符串的概念:在C语言中,字符串是指由若干个有效字符(其中包括字母、数字、转义字符、等)组成的系列,以\0作为字符串结束标志。"\0’'是一个“空操作”字符,它不做任何操作,只是一个标志,它不计入串的长度。

空字符"\0",作用是字符串结尾标志,空字符的ASCII码为0。
空格符,作用是显示一个空格,其ASCII码为32。
制表符为“\t”,作用是想当于4个或8个空格符、其ASCII码为9。
换行符为"n’,作用是将光标移至下一行,其ASCII码为10。

关于ASCII码的了解相关推荐

  1. js函数语法:ASCII 码的相互转换,字符串操作,数学计算

    ASCII 码的相互转换 for (let i = 'a'.charCodeAt(); i <= 'z'.charCodeAt(); i++) {a.push(String.fromCharCo ...

  2. 键盘码 ascii码

    ASCII码表 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 . 1 SOH 33 ! 65 A 9 ...

  3. 回车的ascii码_ASCII码表

    ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符.标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到  ...

  4. 将字符串下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p92 5.1.2 上级实训内容 [实训内容7]设有一个字符串为baawrskjghzlicda,将字符 ...

  5. ascii码值为负数_作为2020年的程序员,你还在为编码问题困惑?

    如果你是一个生活在2020年的程序员,却不了解字符.字符集.编码和Unicode这些基础知识.那你可要小心了,要是被我抓到你,我会让你在潜水艇里剥六个月洋葱来惩罚你. --来源网络 基本概念科普 为了 ...

  6. AD7606数据采集板使用ASCII码传递BINARY数据

    ■ 问题提出 在 带有128KB缓存的AD7606模拟采集板 后面更新了不带板内缓冲区的C51程序.采集板与计算机之间存在两种实时数据通道: 通过USB-RS232转接串口,波特率为460800 通过 ...

  7. python汉字转到ascii码_python中字母与ascii码的相互转换

    在做python编程时,碰到了需要将字母转换成ascii码的,原本以为用Int()就可以直接将字符串转换成整形了,可是int()带了一个默认参数,base=10,这里表示的是十进制,若出现字母,则会报 ...

  8. HDU 2000 ASCII码排序

    http://acm.hdu.edu.cn/showproblem.php?pid=2000 Problem Description 输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符 ...

  9. python3 字符串 转 ascii码

    在这里先解释一下ASCII,Unicode 和 UTF-8这三者的关系 最早出现的是ASCII,一共包含128个字符(一个字节可以表示256种状态,但第一位所有默认为0,所以只有128种).在接下来计 ...

  10. C语言 · c++_ch02_01(打印元音字母的ASCII码)

    算法提高 c++_ch02_01   时间限制:1.0s   内存限制:512.0MB 编写一个程序,利用强制类型转换打印元音字母大小写10种形式的ASCII码. 输出的顺序为:大写的字母A,E,I, ...

最新文章

  1. Handle类的用法
  2. 检测移动端内存敏感数据方法(安卓)
  3. 内部数据中心不会消失的6个原因
  4. java小数点后两位 四舍五入_Java中double函数,四舍五入并保留小数点后两位的4种方法,BMI案例...
  5. TCP/IP之TCP连接的建立与中止状态分析
  6. mysql服务不能启动的几大原因
  7. artcam 9.0英文版本下载_Win10安装paddlepaddle-gpu的python版本
  8. 更名OpenShift容器平台,红帽实现战略性转变
  9. HAproxy负载均衡动静分离实现及配置详解
  10. 解决Charles Response 中文乱码
  11. 挖坑:handoop2.6 开启kerberos(全流程学习记录)
  12. tensorflow cnn文本分类
  13. makefile的简单编写
  14. Efficient polynomial commitment schemes for multiple points and polynomials学习笔记
  15. html 首行缩进两个空格,关于css的text-indent首行缩进两个字符和图片缩进的问题...
  16. Web前端之HTML+CSS的知识总结
  17. app 原形设计常用工具总结
  18. 【转载】Kano模型在用户调研中的应用:客户关系管理工具调研实例
  19. 小记 events.EventEmitter.call
  20. 解除网页无法选择文字_无法复制

热门文章

  1. 数字化工厂的定义及建设目标和意义
  2. 10款优秀的产品包装设计欣赏!
  3. 珠海个人社保购买流程(灵活就业购买社保)
  4. 盘点2022架构创新实践—GIAC深圳大会全日程公布
  5. 应届毕业生的第一份程序员工作
  6. android 设置画布大小设置,Android自定义视图:设置画布大小以包装位图
  7. 淘宝/天猫图片识别产品接口 API 返回值说明
  8. 《考前模拟》全国计算机等级考试一级练习题。这些题目你都会吗
  9. 发那科机器人示教器电缆线_青岛发那科工业机器人控制器无法正常开机故障维修...
  10. 青少年编程-Python画图“爱笑的眼睛机器人”第二幕