如果计算机只存储二进制数据,那么它如何表示字符呢?计算机使用的是字符集,将字符映射为整数。早期,字符集只用 8 位表示。即使是现在,在字符模式(如 MS-DOS)下运行时,IBM 兼容微机使用的还是 ASCII(读为“askey”)字符集。

ASCII 是美国标准信息交换码(AmeTican Standard Code for Information Interchange)的首字母缩写。在 ASCII 中,每个字符都被分配了一个独一无二的 7 位整数。

由于 ASCII 只用字节中的低 7 位,因此最高位在不同计算机上被用于创建其专有字符集。比如,IBM 兼容微机就用数值 128〜255 来表示图形符号和希腊字符。

ANSI 字符集

美国国家标准协会(ANSI)定义了 8 位字符集来表示多达 256 个字符。前 128 个字符对应标准美国键盘上的字母和符号。后 128 个字符表示特殊字符,诸如国际字母表、重音符号、货币符号和分数。

Microsoft Windows 早期版本使用 ANSI 字符集。

Unicode 标准

当前,计算机必须能表示计算机软件中世界上各种各样的语言。因此,Unicode 被创建出来,用于提供一种定义文字和符号的通用方法。

Unicode 定义了数字代码(称为代码点(code point)),定义的对象为文字、符号以及所有主要语言中使用的标点符号,包括欧洲字母文字、中东的从右到左书写的文字和很多亚洲文字。代码点转换为可显示字符的格式有三种:

  • UTF-8 用于 HTML,与 ASCII 有相同的字节数值。
  • UTF-16 用于节约使用内存与高效访问字符相互平衡的环境中。比如,Microsoft Windows 近期版本使用了 UTF-16,其中的每个字符都有一个 16 位的编码。
  • UTF-32 用于不考虑空间,但需要固定宽度字符的环境中。每个字符都有一个 32 位的编码。

ASCII 字符串

有一个或多个字符的序列被称为字符串(string)。更具体地说,一个 ASCII 字符串是保存在内存中的,包含了 ASCII 代码的连续字节。比如,字符串“ABC123”的数字代码是 41h、42h、43h、31h、32h 和 33h。

以空字节结束(null-terminated)的字符串是指,在字符串的结尾处有一个为 0 的字节。C 和 C++ 语言使用的是以空字节结束的字符串,一些 Windows 操作系统函数也要求字符串使用这种格式。

使用 ASCII 表

下图中列出了在 Windows 控制台模式下运行时使用的 ASCII 码。

在查找字符的十六进制 ASCII 码时,先沿着表格最上面一行,再找到包含要转换字符的列即可。表格第二行是该十六进制数值的最高位;左起第二列是最低位。

例如,要查找字母 a 的 ASCII 码,先找到包含该字母的列,在这一列第二行中找到第一个十六进制数字 6。然后,找到包含 a 的行的左起第二列,其数字为 1。因此,a 的 ASCII 码是十六进制数 61。

下图用简单的形式说明了这个过程:

ASCII 控制字符

0〜31 的字符代码被称为 ASCII 控制字符。若程序用这些代码编写标准输出(比如 C++ 中),控制字符就会执行预先定义的动作。下表列出了该范围内最常用的字符。

ASCII码(十进制) 说明 ASCII码(十进制) 说明
8 回退符(向左移动一列) 12 换页符(移动到下一个打印页)
9 水平制表符(向前跳过 n 列) 13 回车符(移动到最左边的输出列)
10 换行符(移动到下一个输出行) 27 换码符

数字数据表示术语

用精确的术语描述内存中和显示屏上的数字及字符是非常重要的。比如,在内存中用单字节保存十进制数 65,形式为 0100 0001。调试程序可能会将该字节显示为“41”,这个数字的十六进制形式。

如果这个字节复制到显存中,则显示屏上可能显示字母“A”,因为在 ASCII 码中,0100 0001 代表的是字母 A。由于数字的解释可以依赖于它的上下文,因此,下面为每个数据表示类型分配一个特定的名称,以便将来的讨论更加清晰:

二进制整数是指,以其原始格式保存在内存中的整数,以备用于计算。二进制整数保存形式为 8 位的倍数(如 8、16、32 或 64)。
数字字符串是一串 ASCII 字符,例如“123”或“65”。这是一种简单的数字表示法,下表以十进制数 65 为例,列出了这种表示法能使用的各种形式。

格式 数值 格式 数值
二进制数字字符串 “01000001” 十六进制数字字符串 “41”
十进制数字字符串 “65” 八进制数字字符串

“101”

下一篇:1.11 字符在计算机中是如何表示的
1.12 汇编语言布尔表达式
处理器架构
2.1 CPU处理器架构
2.2 32位x86处理器架构
2.3 x86-64处理器架构
2.4 x86计算机组件
汇编语言基础
3.1 第一个汇编语言程序
3.2 汇编语言常量
3.3 汇编语言保留字
3.4 汇编语言标识符
3.5 汇编语言伪指令

字符在计算机中是如何表示的?相关推荐

  1. 字符在计算机中的存储

    在计算机中提供给用户最常见的显示就是字符,也称之为文本,字符的种类非常多,每种语言都有自己的字符集,那么,这么多的字符,如何存储进计算机中呢? 本文为你揭晓英文字符.中文字符.以及全世界所有字符在计算 ...

  2. 计算机中的数值和信息编码有哪些,[转载]信息编码 (数值型和字符型编码)...

    信息编码 1.数值型编码 2.字符型编码 一.数值在计算机中的表现形式.计算机采用二进制数进行数据存储与计算,这是由计算机中所使用的逻辑器件所决定的.这种逻辑器件是具有两种状态的电路(触发器),好处是 ...

  3. 数据在计算机中编码方式教案,字符数据在计算机中的表示方法

    计算机中数据的概念是广义的,计算机除了处理各种数之外,还要处理大量符号,如英文字母.汉字等非数值的信息.例如,当要用计算机编写文章时,就需要将文章中的各种符号.英文字母.汉字等输入计算机,然后由计算机 ...

  4. 负317是几位数在计算机课中,计算机应用基础数据在计算机中的表示ppt课件

    .,数据在计算机中的表示,[email protected],.,数据在计算机中的表示,进位计数制及相互转换数值.字符和图形图像在计算机中的表示,.,数据单位,计算机中数据的常用单位有位.字节和字.1 ...

  5. 二进制以上的计算机,计算机中的二进制

    计算机中的二进制 经常在有时候看到什么进制什么的 比如二进制 十六进制什么的..其实也没啥说白了 其实都是在表示一个数而已 只是表示的方式不一样罢了 先来看看十进制: 什么是十进制?也就是我们平时表示 ...

  6. 计算机领域常用的英文名称和缩写,计算机中常用的英文缩写有哪些

    计算机中常用的英文缩写有哪些-计算机缩写?在使用计算机的过程中, 你可能会碰到各种各样的专业术语, 特别是那些英文缩写常让我们不知所云,那么计算机缩写,计算机中常用的英文缩写有哪些呢?昂立外语[上海口 ...

  7. C语言中字符型在计算机中的存储

    一. 字符型的分类和表示范围 char:是有符号还是无符号数视编译器而定,一般为有符号数,下文把它全部当成有符号数进行讨论 表示范围:32位和64位机器上均是一个字节,所以是八个bit位,最高位为符号 ...

  8. (计算机组成原理)第二章数据的表示和运算-第一节3:字符与字符串在计算机中的表示详解

    文章目录 一:字符编码与ASCII编码 二:汉字的表示和编码 (1)汉字的输入编码 (2)汉字内码 (3)汉字输出码(字模码) 总结 三:字符串 现代计算机不仅处理数值领域的问题,而且处理大量非数值领 ...

  9. 计算机中字符的表示方法

    一.数值 1.整数:无符号整数.有符号整数(计算机中有符号的数值一般用补码形式存储) 例:无符号整数(所有位都表示数值) int:0x00000000~0xFFFFFFFF(0~4294967295) ...

最新文章

  1. 建模步骤_Revit软件介绍?Revit参数化构件建模步骤
  2. python版本越高越好吗-5个Python特性 越早知道越好的
  3. .NET疯狂架构经验分享系列之(七)WCF支持(转)
  4. python实现提取jira bug列表
  5. Html.BeginForm() vs Ajax.BeginForm() in MVC3
  6. Set和Map集合的比较
  7. addroutes没添加进去_CAD中如何绘制函数曲线及添加数学公式
  8. Linux之chrony时间同步服务、ntp协议
  9. Windows Server 2012虚拟桌面分辨率支持列表
  10. wireshark抓包QQ查IP
  11. 安卓逆向_2 --- Androidkiller,apktool、dex2jar、jd-gui、jadx反编译工具 的 安装、设置及使用教程
  12. html页面获取扫码枪参数,js获取扫码枪输入数据的方法
  13. java 图片渐变消失_透明背景图像与渐变
  14. 使用nltk库查找英文同义词和反义词
  15. linux下配置dnx地址,Linux上编译DNX失败
  16. [CTSC2010]珠宝商
  17. 《拥抱机器人时代——Servo杂志中文精华合集》——4.5 审视无线技术
  18. 基于SSM医药后台管理系统
  19. HDOJ 4950 Monster
  20. 《万历十五年》--黄仁宇

热门文章

  1. hihocoder offer收割编程练习赛12 B 一面砖墙
  2. 不同视图间的跳转方式
  3. AngularJS基础01 从HelloWorld说起
  4. 自然语言处理笔记4-哈工大 关毅
  5. 十七、“秦时山洞汉时水,水长山高不止息。”(2021.5.17)
  6. 云炬Android开发笔记 2-2 Android studio项目上传到Github及无法连接Github的问题处理
  7. 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting
  8. if中加return_答应我,别再 if/else 走天下了可以吗?
  9. PIC单片机入门_框架与存储器
  10. 将数据从一个表剪切到另一个表中