字符在计算机中是如何表示的?
如果计算机只存储二进制数据,那么它如何表示字符呢?计算机使用的是字符集,将字符映射为整数。早期,字符集只用 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.字符型编码 一.数值在计算机中的表现形式.计算机采用二进制数进行数据存储与计算,这是由计算机中所使用的逻辑器件所决定的.这种逻辑器件是具有两种状态的电路(触发器),好处是 ...
- 数据在计算机中编码方式教案,字符数据在计算机中的表示方法
计算机中数据的概念是广义的,计算机除了处理各种数之外,还要处理大量符号,如英文字母.汉字等非数值的信息.例如,当要用计算机编写文章时,就需要将文章中的各种符号.英文字母.汉字等输入计算机,然后由计算机 ...
- 负317是几位数在计算机课中,计算机应用基础数据在计算机中的表示ppt课件
.,数据在计算机中的表示,[email protected],.,数据在计算机中的表示,进位计数制及相互转换数值.字符和图形图像在计算机中的表示,.,数据单位,计算机中数据的常用单位有位.字节和字.1 ...
- 二进制以上的计算机,计算机中的二进制
计算机中的二进制 经常在有时候看到什么进制什么的 比如二进制 十六进制什么的..其实也没啥说白了 其实都是在表示一个数而已 只是表示的方式不一样罢了 先来看看十进制: 什么是十进制?也就是我们平时表示 ...
- 计算机领域常用的英文名称和缩写,计算机中常用的英文缩写有哪些
计算机中常用的英文缩写有哪些-计算机缩写?在使用计算机的过程中, 你可能会碰到各种各样的专业术语, 特别是那些英文缩写常让我们不知所云,那么计算机缩写,计算机中常用的英文缩写有哪些呢?昂立外语[上海口 ...
- C语言中字符型在计算机中的存储
一. 字符型的分类和表示范围 char:是有符号还是无符号数视编译器而定,一般为有符号数,下文把它全部当成有符号数进行讨论 表示范围:32位和64位机器上均是一个字节,所以是八个bit位,最高位为符号 ...
- (计算机组成原理)第二章数据的表示和运算-第一节3:字符与字符串在计算机中的表示详解
文章目录 一:字符编码与ASCII编码 二:汉字的表示和编码 (1)汉字的输入编码 (2)汉字内码 (3)汉字输出码(字模码) 总结 三:字符串 现代计算机不仅处理数值领域的问题,而且处理大量非数值领 ...
- 计算机中字符的表示方法
一.数值 1.整数:无符号整数.有符号整数(计算机中有符号的数值一般用补码形式存储) 例:无符号整数(所有位都表示数值) int:0x00000000~0xFFFFFFFF(0~4294967295) ...
最新文章
- 建模步骤_Revit软件介绍?Revit参数化构件建模步骤
- python版本越高越好吗-5个Python特性 越早知道越好的
- .NET疯狂架构经验分享系列之(七)WCF支持(转)
- python实现提取jira bug列表
- Html.BeginForm() vs Ajax.BeginForm() in MVC3
- Set和Map集合的比较
- addroutes没添加进去_CAD中如何绘制函数曲线及添加数学公式
- Linux之chrony时间同步服务、ntp协议
- Windows Server 2012虚拟桌面分辨率支持列表
- wireshark抓包QQ查IP
- 安卓逆向_2 --- Androidkiller,apktool、dex2jar、jd-gui、jadx反编译工具 的 安装、设置及使用教程
- html页面获取扫码枪参数,js获取扫码枪输入数据的方法
- java 图片渐变消失_透明背景图像与渐变
- 使用nltk库查找英文同义词和反义词
- linux下配置dnx地址,Linux上编译DNX失败
- [CTSC2010]珠宝商
- 《拥抱机器人时代——Servo杂志中文精华合集》——4.5 审视无线技术
- 基于SSM医药后台管理系统
- HDOJ 4950 Monster
- 《万历十五年》--黄仁宇
热门文章
- hihocoder offer收割编程练习赛12 B 一面砖墙
- 不同视图间的跳转方式
- AngularJS基础01 从HelloWorld说起
- 自然语言处理笔记4-哈工大 关毅
- 十七、“秦时山洞汉时水,水长山高不止息。”(2021.5.17)
- 云炬Android开发笔记 2-2 Android studio项目上传到Github及无法连接Github的问题处理
- 台湾大学林轩田机器学习基石课程学习笔记13 -- Hazard of Overfitting
- if中加return_答应我,别再 if/else 走天下了可以吗?
- PIC单片机入门_框架与存储器
- 将数据从一个表剪切到另一个表中