计算机底层:ASCII、区位码、国标码、汉字机内码之间的关系,还有字形码和输入输出编码之间的关系以及介绍

键盘上有:数字、字母、符合。这些都称作为字符,而它们的组合就叫做:字符串。

ASCII

键盘上所能表示的字符有128个,刚好是2^7,因此计算机用7个bit位就可以表示这些字符。

        但是在计算机内部,并不会使用7个bit位,而是在7位的前面补一个0,变成8位。也就是一个存储单元,因此一个字符就会存放在一个存储的单元内

        有了7bit个bit位就可以表示128种不同的符合。每种符号就被附上了不同的与之对应的二进制编码。用一个二进制编码就可以表示一个符号。

        为了让人们更好地记住这些二进制编码以及所对应地符号,制作了一个表,这个表上使用的不再是二进制对应一个字符串 而是 十进制对应一个字符。

        这就是ASCII码表。

        最后,我们知道在ASCII中,通常是8bit表示一个字符,且最高位都是0。

ASCII码对应了128个字符。

        这些字符被分成三类:可印刷字符、控制字符、通信字符

        可印刷字符:32~126都是可印刷字符。可以打印出来给人看的。

        控制字符:127是控制字符,DEL就是键盘上的delete,用于删除。

        通信字符:0~32,比如6,ACK,在两个电脑通信时,会一方接到另一方传来的数据时,就会回一个ACK包。

        

需要注意的是,在内存中存放的数据是该字符在ASCII码对应的二进制。这个二进制就是上面ASCII码表中的十进制转成二进制的二进制。

        

         如果你知道M的ASCII码值那么这些计算只不过是锦上添花罢了。

我们知道,中文也是字符,但ASCII码值对应字符内没有一个中文。

        那么中文的字符怎么在计算机内打印出来呢?

        为了能够存储和打印中文字符,中国发明了属于自己的汉字编码。

GB 2312 -80

        GB 2312-80是由区位码演变而来的:

        区位码中,汉字被分成了94个区域,每个区域有94个位置。这被称为:区(区域)位(位置)码

                

        其中,就像是坐标一样,区是横坐标,位是纵坐标一样。

                

比如,表示'啊'这个字符,区位码:区是16 位是01。这是十进制,计算机表示时是二进制。

                区和位组成区位码:即'啊'的区位码就是1610

区位码的存放与取出:

       存放:区位码在内存中是分开存储的,就是将区码和位码分开存放。而为了适应计算机,在计算机内部,无论是区码还是位码,都是由8个bit位组成的。一个区码或是位码都会放到一个存储单元内。如:'啊'区码是16位码是01,那么内存中存放的区码:0001 0000,位码:0000 0001

        取出:区位码取出时,会将区码和位码结合,变成16bit的二进制。高8bit是区码,底8bit是位码。然后计算机再用通过区位码读取出信息,易于理解地说就是区码和位码被翻译成10进制,组合后对照设定地区位码表,进行读取信息。比如:'啊',计算机从内存中读到了区码和位码,通过组合后计算机发现对应了'啊'字,那么就输出了'啊'

GB 2312 -80:

            在网络传输的过程中:A要给B传输一个数据,如果A传去的数据是用GB2312-80编的,而B读取地方式是用ASCII方式的,GB 2312-80将区位码传过去,当B收到时会先读到区码,因为区码和位码的范围用十进制表示都是0~93,如果此时的区码的十进制是6,那么ASCII对应的6则是ACK,会发现ACK是回包的指示。那么就会出现问题。

        为了解决这一问题,科学家就将区位码加上32,因为ASCII的通信字符是0~32,如果将区位码的区码和位码都+32,那么区码和位码的范围就变成了32-125。就避开了与ASCII中通信字符与控制字符的相同的情况,提高了ASCII和区位码的兼容性。而这种32~125的区位码就是所谓的:国标码(GB2312 -80)

但是国标码是用十六进制表示的,实际上是再区位码的区码和位码分别加上20H(32O),也就是加上2020H,最后得到了GB 2312-80

        GB 2312 -80是国标码,也被称之为交换码

GB 2312 :

        上面说到出现国标码是为了防止与ASCII的控制字符和通信字符冲突,但是还是会和打印字符发送冲突,因此为了彻底让国标码和ASCII兼容。就再GB 2312-80的基础上分别在加上8080H,也就是在区码和位码上再加上128(80H)。最后得到了:汉字机内码,GB 2312就是汉字机内码。

        由于ASCII的范围是再0-127,而GB 2312在(128+32=160)160~253(93+160),因此GB2312与ASCII就不会发生冲突了,使得中国汉字与外国英文兼容了。

        最后在计算机内部,使用的就是汉字机内码(GB 2312)

        汉字机内码也有别的称呼:汉字内码、内码。

        

        

除了GB 2312这种汉字编码方式,还有许多其他的,比如:UTF-8、GBK等等...

汉字在计算机内部的输入和输出:

输入:

        

如果此时要用输入法打出一个'内'字,那么我需要在键盘上点4个键:nei1。

        输入nei1后,输入法会将nei1转换成国标码,然后计算机系统或者是引用软件,会将国标码再转换成汉字机内码,最后计算机或是手机再去保存这个汉字机内码。       

        输入法也可能会直接将nei1转换成机内码。

输出:

        汉字要输出,就需要用到另一种编码:汉字字形码。

汉字字形码是通过用一块一块的像素拼组而成的,1表示这里的像素需要图上颜色,0表示不用。从而达到输出一个汉字。

        计算机会将汉字机内码转换成国标码,再将国标码转换成汉字字形码,或是直接由汉字机内码转换成汉字字形码。最后输出。

汉字机内码转换成汉字字形码需要经过以下步骤:

1. 根据汉字机内码的编码规则,将每个汉字转换成相应的二进制编码。

2. 对于一些早期的编码规则,需要使用专门的编码转换表将汉字机内码转换成Unicode编码。

3. 根据汉字字形库中的字形信息,将汉字机内码转换成相应的汉字字形码。

4. 在显示设备上根据汉字字形码渲染出汉字的图形形态,供用户观看和使用。

总之,汉字机内码转换成汉字字形码需要依赖计算机编码规则和字形库信息,经过多个步骤才能完成。

计算机底层:ASCII码、区位码、国标码、汉字机内码,还有字形码和输入输出编码之间的关系以及介绍相关推荐

  1. 字符编码(ASCII码、音码、形码、区位码,国标码、机内码,字形码)

    1.西文字符编码   ASCII(美国信息交换标准代码)字符编码,该编码标准已经被国际标准化组织(ISO)指定为国际标准,是国际上使用最广泛的一种字符编码.标准的ASCII码采用二进制编码,他可以表示 ...

  2. 计算机底层存储字节还是字符,彻底搞懂乱码——字符,字节和编码

    级别:中级 摘要:本文介绍了字符与编码的发展过程,相关概念的正确理解.举例说明了一些实际应用中,编码的实现方法.然后,本文讲述了通常对字符与编码的几种误解,由于这些误解而导致乱码产生的原因,以及消除乱 ...

  3. 汉字机内码简介及转换工具

    汉字机内码,又称"汉字ASCII码",简称"内码",指计算机内部存储,处理加工和传输汉字时所用的由0和1符号组成的代码.输入码被接受后就由汉字操作系统的&quo ...

  4. 大学计算机的区位码国标码机内码,[计 算 机]汉字区位码\国标码\机内码之间的换算...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 国标与机内码的转换 国标码并不等于区位码,它是由区位码稍作转换得到,其转换方法为:先将十进制区码和位码转换为十六进制的区码和位码,;这样就得了一个与国标码 ...

  5. mysql外码内码定义_刨根究底字符编码之六——简体汉字编码中区位码、国标码、内码、外码、字形码的区别及关系...

    简体汉字编码中区位码.国标码.内码.外码.字形码的区别及关系 GB2312.GBK.GB18030等GB类汉字编码方案的具体实现方式是怎样的?区位码是什么?国标码是什么?内码.外码.字形码又是什么意思 ...

  6. 刨根究底字符编码之六——简体汉字编码中区位码、国标码、内码、外码、字形码的区别及关系

    简体汉字编码中区位码.国标码.内码.外码.字形码的区别及关系 GB2312.GBK.GB18030等GB类汉字编码方案的具体实现方式是怎样的?区位码是什么?国标码是什么?内码.外码.字形码又是什么意思 ...

  7. 大学计算机汉字字形码,计算机处理汉字信息的前提条件是对每个汉字进行编码...

    计算机处理汉字信息的前提条件是对每个汉字进行编码,这些编码统称为汉字编码.汉字信息在系统内传送的过程就是汉字编码转换的过程. 汉字交换码:汉字信息处理系统之间或通信系统之间传输信息时,对每一个汉字所规 ...

  8. 汉字的内码和区位码与显示汉字原理

    汉字的内码和区位码 在计算机中英文字符是用一个字节的ASCII码表示,该字节最高位一般置0或用做奇偶校验,故实际是用7位码来代表128个字符的,但对于众多的汉字,只有用两个字节才能代表,这样用两个字节 ...

  9. 输入码、区位码、内码、国标码的出现原因

    2020H.8080H 区位码.内码.国标码怎么转换非常简单,但是令人迷惑的是为什么要那么转换?这种转换不可能平白无故地那样转换! 首先,注意到一点,GB2312虽说是对中文编码,但是里面有对26个英 ...

最新文章

  1. 使用VS2010调试技巧让C指针无处遁形
  2. MIME::Base64::encode格式
  3. H5 canvas的 width、height 与style中宽高的区别
  4. Google 是如何定制 Material 主题的?
  5. mysql mcd date_mysql升级5.5 - ifeixiang的个人页面 - OSCHINA - 中文开源技术交流社区
  6. 同济大学计算机学院徐老师,第十八届同济大学程序设计竞赛暨高校网络友谊赛圆满落幕...
  7. 一个关于php使用pdo方式进行数据库连接和处理的类
  8. 位移运算符(7个)之第一个: 左移
  9. ccs安装多版本编译器离线_大数据分析:学习工具JDK,在线安装指南
  10. Storm集群安装Version1.0.1
  11. 前端经典练手项目|用 JavaScript 实现网页版扫雷
  12. 【使用python和flask建个人博客】如何在jinja2中进行简单的四则运算和把一个浮点数显示成整数?
  13. 大于23的男生女生都该看.看完你会变一个人
  14. 微信、微博、贴吧平台涉嫌违反《网络安全法》被立案调查 审查
  15. 同样的实验室,硕士们进了BAT拿高工资,为什么博士却要挤破头进985高校?
  16. Kali2020版安装 macof安装使用
  17. [].shift.call( arguments ) 和 [].slice.call( arguments ) 解释
  18. 解决document.form.submit()对象不支持此属性或方法
  19. 头文件和库函数的区别
  20. 众筹网站项目第七天之用户角色分配(1)

热门文章

  1. Verilog基础入门
  2. 火山坑随笔20180920_不能使用模拟器调试的问题
  3. 【第一篇】Spring Cloud简介
  4. 计算机软件设计自学教程入门,零基础SketchBook室内设计电脑手绘教程_溜溜自学网...
  5. ASP.NET MVC 小区物业费管理平台
  6. npm install丢包 启动项目报错
  7. Create and Drop Database, Create, Alter and Drop Tables, Select, Insert, Update, Delete Commands
  8. 2019CSP-J普及组复赛题解
  9. 车载客流统计分析,你分析的对吗?
  10. 《数学之美》——第十一章 个人笔记