非数值数据,通常指的是字符、字符串、图形符号、汉字等数据,它们并不用来表示数值的大小,一般情况下也不对它们进行算术运算。

1. ASCII字符

由于计算机内部只能识别和处理二进制代码,所以字符必须按照一定的规则用一组二进制编码来表示。

字符编码方式有很多种,美国国家标准局(ANSI)制定的ASCII(American Standard Code for Information Interchange,美国信息交换标准码)是现今最为通用的单字节编码系统,它主要用于显示现代英文字母和符号,已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。

ASCII字符编码表如表2-3所示,表中的横轴为7位ASCII码高3位b6b5b4的二进制表示,纵轴为ASCII码低4位b3b2b1b0的二进制表示,括号中的数字为对应的十六进制表示。

表2-3  ASCII字符编码表

ASCII码用7位二进制编码(0~127)表示一个字符,总共可以表示128个字符,其中有95个是可显示和打印的字符,包括10个十进制数字(0~9)、52个英文大写和小写字母(A~Z,a~z)、以及若干个运算符和标点符号,除此之外的33个字符是不可显示和打印的控制符号,原先用于控制计算机外围设备的某些工作特性,现在多数已被废弃。

计算机通常用一个字节(8位)来存放一个ASCII字符,字节的低7位表示不同的ASCII字符,而字节的最高1位固定为0。在有些情况下,字节的最高1位也可以用作奇偶校验位以检验错误,或用作西文字符和汉字的区分标识。

除了使用字节最高位为0的标准ASCII码(0~127)之外,通过使用字节最高位为1的另外128个编码(128~255),许多公司和组织还自行定义了不少互不兼容的扩展ASCII码系统。扩展ASCII码用8位二进制表示一个字符,总共可以表示256个不同的字符。

2. Unicode码

现今人类使用了接近6800种不同的语言,即使是扩展ASCII码这类8位代码也不能满足需要。解决问题的最佳方案是设计一种全新的编码方法,而这种方法必须有足够的能力来容纳全世界所有语言中任意一种语言的所有符号,这就是Unicode(统一码)。Unicode为每种语言中的每个字符设定了统一并且惟一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。

目前实际应用的Unicode对应于UCS-2(2-byte Universal Character Set,2字节通用字符集),每个字符占用2个字节,使用16位的编码空间,理论上允许表示216=65536个字符,可以基本满足各种语言的使用需要。实际上目前版本的Unicode尚未填充满这16位编码,从而为特殊的应用和将来的扩展保留了大量的编码空间。这个编码空间已经非常大了,但设计者考虑到将来某一天它可能也会不够用,所以又定义了UCS-4编码,每个字符占用4个字节(实际上只用了31位,最高位必须为0),理论上可以表示231=2 147 483 648个字符。

在PC机中,若使用扩展ASCII码、Unicode UCS-2和UCS-4方法分别表示一个字符,则三者之间的差别为:扩展ASCII码用8位表示,Unicode UCS-2用16位表示,Unicode UCS-4用32位表示。

3. 字符串

字符串是指连续的一串字符,它们通常占用主存中连续的多个字节,每个字节存放一个字符(以ASCII字符为例)。当主存字由2个或4个字节组成时,在同一个主存字中,既可按从低位字节向高位字节的顺序存放字符串的内容,也可按从高位字节向低位字节的顺序存放字符串的内容。这两种存放方式都是常用方式,不同的计算机可以选用其中的任何一种。

例如下列字符串:

IF└┘A>=B└┘THEN└┘READ(C)

可以按图2-4所示从高位字节到低位字节依次存放在主存中。图中,主存单元长度是4个字节,每个字节中存放相应字符的ASCII值,文字表达式中的空格“└┘”在主存中也占一个字节的位置。因此,每个字节分别存放十六进制的49、46、20、41、3E、3D、42、20、54、48、45、4E、20、52、45、41、44、28、43、29。

转载自:http://share.onlinesjtu.com/mod/tab/view.php?id=180

字符与字符串的表示(ASCII字符,Unicode码,字符串)相关推荐

  1. python字符编码转换_Python字符和字符值(ASCII或Unicode码值)转换方法

    目的 将一个字符转化为相应的ASCII或Unicode码,或相反的操作. 方法 对于ASCII码(0~255范围) 代码如下: >>> print ord('A') 65 >& ...

  2. 字符编码的发展(ASCII、Unicode、utf-8)

    最近一直在看廖雪峰老师的python网上教程,python内容简单易理解,就没整理,但是字符串编码作为一直困扰自己的问题,看了几遍文章,最终还是将其整理如下,本篇博客总结自廖雪峰老师的网上教程:htt ...

  3. java utf-8字符表_Java中的ASCII、Unicode和UTF-8字符编码集

    首先讲一下几种字符的编码方式: 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态 ...

  4. 字符编码:ANSI、ASCII、Unicode、UTF-8、UTF-16、UTF-32概念和格式转换

    1.ASCII ASCII码是字符集,使用指定的7 位或8 位二进制数组合来表示128或256 种可能的字符.分为标准ASCII .扩展ASCII . 标准ASCII 码也叫基础ASCII码,使用7 ...

  5. php十进制转ascii字符,(5条消息)php ASCII字符和十六进制数之间的相互转化

    一:ASCII字符转化为十六进制数 在php中将ASCII字符转化为十六进制数使用到bin2hex函数 语法如下: bin2hex(string) 参数string为需要转化的ASCII字符 实例如下 ...

  6. iOS通讯录复制的手机号码字符串多了奇怪的unicode码\u0000202d-\u0000202c

    最近项目线上问题,造成问题的原因: 应用的用户信息界面需要输入手机号码,该用户就把自己电话簿里的手机号码进行复制(copy)之后,把复制的内容粘贴在我们页面的输入框里,一切都很完美,但点用户击保存后, ...

  7. python unicode转字符串_Python2.X如何将Unicode中文字符串转换成 string字符串

    普通字符串可以用多种方式编码成Unicode字符串,具体要看你究竟选择了哪种编码: unicodestring = u"Hello world" # 将Unicode转化为普通Py ...

  8. 常见三种字符编码的区别:ASCII、Unicode、UTF-8

    什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255( ...

  9. 常见的字符编码表讲解(ASCII、Unicode、UTF-8)

    觉得这篇文章对你有帮助的话,就留个赞赞吧~

  10. 字符编码、常见字符集解析(ASCII、Unicode、UTF-8、GB2312等)

    文章目录 字符编码 ASCII Unicode UTF-8 GB2312 C++中的字符类型 python中的字符编码 小结 各种字符编码的转换是个非常容易混淆的问题,这篇文章旨在梳理字符编码.常见字 ...

最新文章

  1. JVM中的垃圾收集器
  2. 系统间通信2:通信管理与远程方法调用RMI
  3. discuz!nt论坛搬迁后出错,提示:对象名 'dnt_templates' 无效
  4. Git分支操作与远程仓库的使用
  5. 逆序对(洛谷P1908题题解,Java语言描述)
  6. html5 版街头霸王,街头霸王5全DLC整合版
  7. 【Elasticsearch】我们如何将 100 秒的 elasticsearch 查询优化为不到一秒。
  8. 我的android学习脚步----------- 的第一个应用
  9. Why bugs don’t get fixed? 不是所有的Bug都要修复
  10. 计算T临界值分布的表
  11. c语言 调用md5sum,使用MD5SUM检查文件
  12. 你们想要的这本硬件书!终于来了!(内含赠书福利)
  13. 台式计算机主板,主板天梯图2020 热门台式机电脑主板排行榜
  14. 成为一个15K的软件测试工程师的基本要求
  15. IDEA Windows + Mac 快捷键(全)
  16. RocketMQ(九)RocketMQ顺序消息
  17. Pytorch、TorchVision、Python、Jetpack版本匹配问题
  18. 金融计算机次方的计算,金融理财计算器使用方法CASIOFC100,200.pdf
  19. MySQLdb ImportError: libmysqlclient.so.18 No Such File or Directory
  20. HDU - 5976 Detachment(贪心思维)

热门文章

  1. ES3J是什么二极管?参数特性怎么看?
  2. 【数学建模】模糊数学矩阵运算——python实现
  3. 云计算、大数据和物联网之间,有什么区别和联系?
  4. C++ vector的reserve和resize详解
  5. Unrecognized VM option ‘‘
  6. java对arrayList按数字大小逆序排序
  7. windows 更新服务器搭建
  8. 北大青鸟广州天河中心ACCP4.0软件工程师各阶段课程
  9. html5与课程思政,省级“课程思政”示范课程:web综述-教案.pdf
  10. 解决企业邮箱发邮箱数量上限问题