【新书推荐】4.2节 字符编码规则

本节内容:字符编码规则。

         ■字符编码规则:ASCII码、ANSI字符集、Unicode字符集。

         ■变形国标码:国标码是16位编码,高8位表示汉字符的区号,低8位表示汉字符的位号。

4.2.1 字符编码规则

计算机只能存储二进制数0和1,那么该如何表示字符呢?

ASCII码字符

ASCII是美国国家标准信息交换码的英文缩写。每个字符由一个唯一的7位整数表示。只使用了每个字节的低7位,共128个字符,对应标准美国键盘上的字母和符号。剩下的最高位被各种计算机用来创建私有字符集,比如IBM PC的扩展ASCII码。

ANSI字符集

如图4-1所示。美国国家标准委员会(ANSI)定义了一个8位的字符集,用于表示256个字符,前128个对应标准美国键盘上的字母和符号。后128个字符用于表示特殊字符,如其他语言字母表中的字母、重音符号、货币符号和分数等。MS-Windows Me/95/98使用ANSI字符集。

提示

         1.注意观察ASCII表,常用的ASCII字符对应的16进制数值需要熟记于心。如响铃字符的ASCII值07H,退格字符08H,TAB制表符09H,换行符0AH,回车符0DH,空格符20H,CTRL+B 的ASCII值02H,CTRL+C的ASCII值03H。

         2.大写字母“A~Z”的ASCII值为41H~5AH,小写字母“a~z”的ASCII值为61H~7AH,数字符“0~9”的ASCII值为30H~39H。

         3.可见字符的ASCII值从20H开始,到7EH结束。

Unicode标准

计算机软件中表示各种不同国家的语言有上百种编码方案,比较混乱。由此创建Unicode标准作为定义字符和符号的统一方法。Unicode标准定义了所有主要语言中使用的字母、符号及标点。Unicode有三种编码形式:

UTF-8:ASCII码在UTF-8编码中占用一个字节,其字节值和ASCII码值相同。所有Unicode字符都可以用一种变长的编码系统表示。

UTF-16:用于访问效率和存储空间并重的环境中。例如:Windows NT/2000/XP使用UTF-16编码,每个字符用16个二进制数据位编码。

UTF-32:用于不太关心存储空间的环境。每个字符都使用32个二进制数据位编码,宽度固定。

                                                                                                                         图4-1 128字符ASCII表

4.2.2 变形国标码

有了ASCII码,计算机可以处理数字、字母等字符,但是并不能处理汉字符。

我们国家1981年5月对六千多个常用汉字制定了交换码的国家标准,即GB2312-80《信息交换用汉字编码字符集—基本集》。该标准规定了汉字信息交换的基本汉字符和一般图形字符,共计7445个,其中汉字分成两个等级共计6763个。该标准同时也给定了它们的二进制编码,即国标码。后来的字符集GBK收录20912个汉字,最新的字符集GB18030收录27533个汉字。

国标码是16位编码,高8位表示汉字符的区号,低8位表示汉字符的位号。实际上,为了给汉字符编码,该标准把代码表分成94个区,每个区94个位。区号和位号都从21H开始。一级汉字安排在30H区至57区,二级汉字安排在58H至77区。

机内码是汉字在计算机内部使用的编码。汉字的机内码采用变形国标码,其变换方法为:变形国标码=国标码+8080H,即将两个字节的最高位由0改1,其余7位不变。

区位码转换为国标码的方式:国标码是由区位码稍作转换得到。先将十进制区码和位码转换为十六进制的区码和位码,再将这个代码加上2020H,就得到国标码。

举例

         某汉字区号为34,位号为56。区位码:3456。

         34 = 0010 0010B = 22H

         56 = 0011 1000B = 38H

国标码:2238H + 2020H = 4258H

变形国标码:4258H + 8080H = C2D8H

本文摘自编程达人系列教材《X86汇编语言基础教程》。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/360718.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

麒麟系统安装minio_centos8.0安装最新minio_离线安装minio并设置权限_创建桶---minio工作笔记001

https://www.minio.org.cn/?id=18&id=3&id=0&id=11&id=9&spinz=qianfeng&adinfo678=baidu&spinz=qianfeng&adinfo678=baidu%3E 首先去到官网去下载minio,然后 可以看到已经显示的官网,然后再去,右边点击下载 进入下载页面一般都是amd64的版本…

Django视图函数技巧,从入门到实战

文章目录 Django视图函数1.request对象的方法2.视图函数的常用的返回对象(1)response对象(2)JsonResponse对象(3)redirect() :给浏览器了一个30x的状态码 3.设置响应头和状态码(1&am…

Linux---动静态库

前言 在初学Linux的时候,简单的提到过动静态库,但当时只是简单的讲述了一下什么是动态库,什么是静态库,我们可以在此基础上更进一步---制作库。在使用gcc编译器的时候,是默认使用动态链接的。 静态库 静态库&#x…

【数据结构 08】红黑树

一、概述 红黑树,是一种二叉搜索树,每一个节点上有一个存储位表示节点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长上两倍,因而是接进平衡的。 红黑树性质: 根节点是黑色红节点的两个孩子…

《Numpy 简易速速上手小册》第10章:Numpy案例研究和实践技巧(2024 最新版)

文章目录 10.1 实际案例分析10.1.1 基础知识10.1.2 完整案例:天气数据分析10.1.3 拓展案例 1:股票价格分析10.1.4 拓展案例 2:信号处理 10.2 Numpy 最佳实践10.2.1 基础知识10.2.2 完整案例:高效数组操作10.2.3 拓展案例 1&#x…

面试题 02.07. 链表相交(力扣LeetCode)

文章目录 面试题 02.07. 链表相交题目描述解题思路c代码优化后c代码 面试题 02.07. 链表相交 题目描述 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 …

【轮式平衡机器人】——TMS320F28069片内外设之ADC

一、ADC概述 这一部分不是我们的重点,原理分类啥的这里简要说明! 步骤:采样、保持、量化、编码 将采样电平(模拟值)转换为数字值的方法:直接比较型(并行ADC、逐次逼近型ADC)&…

通俗易懂理解注意力机制(Attention Mechanism)

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。 一、参考资料 大话注意力机制(Attention Mechanism) 注意力机制(Attention Mechanism) 深度学习中的注意力机制 注意力机制 二、注意力…

关于最小系统板PCB设计后的一些反思

简介 趁着刚刚画完板子寄回来,在这里做一些记录。 板子状况 这里打烊了5块PCB,但是没有进行SMT贴片,后续如果有芯片可以焊接上去进行后续验证。 封装问题 这里可以看到,我这里两侧的排针都是焊盘,不是通孔&#…

【动态规划】【字符串】【前缀和】1639通过给定词典构造目标字符串的方案数

作者推荐 【动态规划】【字符串】【行程码】1531. 压缩字符串 本文涉及知识点 动态规划汇总 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 1639. 通过给定词典构造目标字符串的方案数 给你一个字符串列表 words 和一个目标字符串 tar…

编译Opencv3.3.1遇到的编译器无法识别的警告的问题解除:

问题描述: 本文,就是在一个硬件的SDK中用到了opencv3.3.1的版本,在笔者目前的VS2019,CUDA11版本下编译的问题和解决。在做Cmake的configure的时候,Cmake报了一个找不到编译器版本的错误, Selecting windows SDK version 10.0.1904…

TOP100 矩阵

1.73. 矩阵置零 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 提示&#xff1a; m matrix.lengthn matrix[0].length1 < m, n < 200-2^31 < matrix[i][j] < 2^31 - 1 思路&#xf…

EMQX 单机及集群搭建

目录 1. 通过 Yum 源安装&#xff08;CentOS7 单机安装&#xff09; 1.1. 通过以下命令配置 EMQX Yum 源&#xff1a; 1.2. 运行以下命令安装 EMQX&#xff1a; 1.3. 运行以下命令启动 EMQX&#xff1a; 1.4. 访问 http://192.168.88.130:18083&#xff0c;默认用户名: adm…

Java项目要不要部署在Docker里?

部署Java项目有很多种方式&#xff0c;传统的方式是直接在物理机或虚拟机上部署应用&#xff0c;但为什么现在容器化部署变得越来越流行&#xff0c; 个人觉得原因有以下几个&#xff1a; 1、 环境一致性&#xff1a;使用Docker可以确保开发、测试和生产环境的一致性&#xff…

如何使用保留可探测字段参数的方法解决视频监控管理平台EasyCVR无法启动的问题

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

飞桨paddlespeech语音唤醒推理C INT8 定点实现

前面的文章&#xff08;飞桨paddlespeech语音唤醒推理C定点实现&#xff09;讲了INT16的定点实现。因为目前商用的语音唤醒方案推理几乎都是INT8的定点实现&#xff0c;于是我又做了INT8的定点实现。 实现前做了一番调研。量化主要包括权重值量化和激活值量化。权重值由于较小且…

Log4j2-24-log4j2 相同的日志打印 2 次

现象 相同的日志打印了两次&#xff0c;且因为日志的配置不同&#xff0c;导致脱敏的情况不一致。 代码与配置 代码 package com.ryo.log4j2.cfg.additivity;import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;public class SimpleDemo…

JNPF低代码平台与其他低代码工具功能有什么不同?

JNPF低代码平台是一种新兴的技术解决方案&#xff0c;它可以帮助开发者快速构建应用程序而无需编写大量的代码。本文将深入了解JNPF低代码平台的常见类型与功能特点&#xff0c;帮助读者更好地理解和应用这项技术。 JNPF低代码平台的功能特点。首先&#xff0c;JNPF低代码平台具…

day28 回溯算法part4

93. 复原 IP 地址 中等 有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 ‘.’ 分隔。 例如&#xff1a;“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址&#xff0c;但是 “0.011…

报错 Cannot read properties of undefined(reading‘addEventListener‘)如何解决

我在制作项目中遇到了一个问题&#xff0c;给大家分享一下&#xff0c;如下图&#xff1a; 问题&#xff1a;这是我给一个input输入框绑定的监听事件出现的报错 翻译&#xff1a;无法读取未定义的属性(读取 addEventListener ) 错误原因&#xff1a;js中操作的dom元素的函数方…