【锟斤拷�⊠是怎样炼成的】——两分钟帮你彻底弄懂计算机的编码原理

这篇具有很好参考价值的文章主要介绍了【锟斤拷�⊠是怎样炼成的】——两分钟帮你彻底弄懂计算机的编码原理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

万国码字符集,一些有趣的博客,c语言,python,java,开发语言,windows

📢📢📢📣📣📣
🌻🌻🌻Hello,大家好,我是天寒雨落,一名有趣的博主,小白一枚,多多关照😜😜😜
🏅🏅🏅CSDN全栈领域新星创作者,阿里云星级博主
💕 入门须知:这片乐园从不缺乏天才,努力才是你的最终入场券!🚀🚀🚀
💓愿我们都能在看不到的地方闪闪发光,一起加油进步🍺🍺🍺
🍉🍉🍉量变引发质变,坚持定会出成效!🌈🌈🌈
🌟🌟🌟✨✨✨

你是否遇到过锟斤拷呢?下面将为你讲解锟斤拷的形成原因。

万国码字符集,一些有趣的博客,c语言,python,java,开发语言,windows

 目录

✨编码原理

🌈基础概念

🌻1.字符

🌻2.字符集

🌻3.字符编码

🌈怎么将字符编码变成0和1呢?

码位

码空间

🌈各种编码的形成过程

🍺ASCII码的形成

🍺ASCII的升级版EASCII

🍺写代码时汉字占两位的缘由

🍺框框—'▯'的形成

🍺广为人知的GBK

🍺超级大的字符集——万国码(UNICODE)

🍺【锟斤拷】的形成过程

🌈原码、反码、补码

✨博客之星评选正在进行


✨编码原理

🌈基础概念

🌻1.字符

  • 一个单独的字符,通常是字母数字符号
  • 字符可以通过计算机的字符编码系统来表示,例如 ASCII 编码、Unicode 编码等。
  • 字符是计算机程序、文本文件、网页等的基本单位,在计算机中通常以字节的形式存储。

🌻2.字符集

一堆字符组成的集合叫做字符集。

字符和字符集电脑一个都不认识,计算机只认二进制,只能以比特的形式记录0和1,为了让计算机识字,就需要把这些字符用0和1表示出来。

🌻3.字符编码

把字符转换为0和1的规则就叫做字符编码。

🌈怎么将字符编码变成0和1呢?

可以选定一个字符集,让字符排在上面,就如下面这个表一样。

00 01 10 11
00
01
10
11

码位

每个字符都有对应的码位(例如,上表中'有'的码位就是1001)。

码空间

每个字符所占位置就是码空间,码空间越大,字符集就越大。

🌈各种编码的形成过程

🍺ASCII码的形成

计算机存储数据的基本单位是字节(Byte),一个字节由8个二进制组成。也就是8个bit,每个bit分为0和1两种状态,8个bit一共有2^8个,也就是256种不同的状态。

所以如果只用一个字节长度来编码字符,也就是用8个0或者1来代表一个字的话,那么这个字符集就能容纳256个字符,听起来很少对不对?但对于英文来说就已经够了,因为他们只有26个英文字母嘛,所以在上世纪60年代,美国人先搞出来了美国信息交换标准代码,简称ASCII,ASCII总共收录了128个字符,包括大小写拉丁字母、数字、常用标点以及像ESC、换行这些看不见的控制字符。

到此为止,事情都很简单,无非就是给这128个字符按照顺序排号,再把序号转换为二进制数字,需要显示的时候,从计算机存储的ASCII字符集中按编号调用字符,就能在屏幕中显示出来了。

🍺ASCII的升级版EASCII

一个字符集对应一个编码规则,不会出错,一切都很清晰、简单、完美。但是这世上远远不止英文一种语言哇,当各国都进入信息化时代社会的时候,文字显示的乱纪元就开始了,上面说过,用一个字节编码字符最多能容纳256个码位。英文总共才那点字符,256个码位用完都还剩下一半。所以西欧一些国家就搞了扩展美国信息交换(EASCII),也就是用剩下的这128个空位来表示其他字符,比如有注音符号的的法语字母,西班牙语的特殊标点,数学上常用的α、β等希腊字母,以及一大堆特殊符号等等。

这时候问题就已经冒头了,各国搞定EASCII字符集和编码后面128字符都不太一样,一共搞出了200多种,互不兼容,就算是同样一串二进制数,在不同的EASCII中对应的字符也不同所以同一份文本,哪怕放到不同语言的计算机中打开,都可能出现乱码。

🍺写代码时汉字占两位的缘由

对于汉字源远流长,数量可太多了,我国1980年公布的GB 2312-80信息交换用汉字编码字符集 基本集就包含了6763个常用简体汉字以及一些标点、符号、数字、拉丁字母等。那很显然,一个字节长度最多只能编码256个字符,对于汉字来说根本不够用,所以GB 2312-80用两个字节来编码一个字符(这也就是为什么我们在写代码的时候汉字占两位),这样理论上就可以容纳2^16也就是65536个字符,现在输入法里的全角标点符号就是用两个字节编码的,而半角标点符号就是用一个字节编码的。

🍺框框—'▯'的形成

不过,GB 2312-80字符集里这六千多汉字,只是最常用的汉字,其实根本不够用,比如像喆、祎,这些人民中常见字甚至都不包括在内,那字符集里没有那个字怎么办呢?那就是打不出来,那些字就会变成'▯'。

🍺广为人知的GBK

日本用日本汉字,韩国用朝鲜汉字,大家都搞出了自己的字符集和编码规则,都优先考虑本地人使用方便,相互之间的兼容性很差,后来微软被逼急了,就根据各地字符集和字符编码自己扩展了GB 2312字符集,加入了一些繁体汉字,这份扩展的字符集,后来成为了汉字内码扩展规范GBK(国家扩展规范)。

🍺超级大的字符集——万国码(UNICODE)

我们搞一个超大字符集,囊括人类世界所有的字符,然后编码出来供全世界使用,不就解决字符集不互容的问题了,这个超级大的字符集,就是万国码(UNICODE)。Unicode决定以书写系统为标准来分类和收录字符,像英语、法语、德语都属于一套书写系统——拉丁字母,如今Unicode已经有了1114112个码位,并平均划分为17个平面,每个平面都有65536个码位,在单个平面上再根据具体的用途划分出区块,区块相当于把同类字符放在一起以方便检索和补充。UTF-8、UTF-16、UTF-32等都是把Unicode字符集中的字符转换成二进制信息的编码方式,目前最常用的就是UTF-8。纯文本文件:编码应使用UTF-8。

因为即使是同一串二进制数字在不同的字符集和编码方式下也会对于不同的字符,所以如果用错误的编码打开文本就会出现乱码。

有了上面的知识储备下面就回归本文最大的问题——锟斤拷�⊠是怎样炼成的?

🍺【锟斤拷】的形成过程

GBK和Unicode都有很多使用者,用GBK编写的字符用UTF-8打开就会无法正常显示,Unicode就会用这个替换字符�来展示所有无法展示显示的字符,如果此时再根据UTF-8编码保存,重新使用GBK编码打开,如果有两个�,那么EFBF BDEF BFBD这三个码位对应的就是【锟斤拷】三个字,也就是说两个�相当于一个【锟斤拷】,所以你在看下载的小说等等才会出现【锟斤拷】。

简单点来说就是以UTF-8方式读取GBK编码的中文,然后又用GBK的格式再次读取。

🌈原码、反码、补码

一篇轻松带你Carry原码、反码、补码(建议收藏)_天寒雨落的博客-CSDN博客

✨博客之星评选正在进行

我正在参加年度博客之星评选,请您帮我投票打分,您的五星好评都是对我的支持和鼓励。希望大家能给个五星,谢谢各位!

https://bbs.csdn.net/topics/611387244

万国码字符集,一些有趣的博客,c语言,python,java,开发语言,windows

 👍+✏️+⭐️是对博主最大的鼓励与支持!!!

 文章来源地址https://www.toymoban.com/news/detail-808915.html

到了这里,关于【锟斤拷�⊠是怎样炼成的】——两分钟帮你彻底弄懂计算机的编码原理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 彻底弄懂套接字

             套接字(socket) 是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行。Linux所提供的功能(如打印服务、连接数据库和提供Web页面)和网络工具(如用于远程登录的rlogin和用于文件传输的ftp)通常都是通过套

    2024年01月17日
    浏览(30)
  • 一文彻底弄懂ConcurrentHashMap

    前面分析 HashMap 的文章,提到过 HashMap 是线程不安全的,其主要原因还是在链表扩容。 JDK1.7 的 HashMap 的扩容操作用到两个方法: resize() 和 transfer() ,主要是重新定位每个桶的下标,并采用 头插法 将元素迁移到新的数组中。假设有多个线程都对 HashMap 进行扩容,有可能扩容

    2024年02月05日
    浏览(44)
  • 一文带你彻底弄懂ZGC

    干掉1ms以内的Java垃圾收集器ZGC到底是个什么东西? ZGC有什么缺点? ZGC (Z Garbage Collector) 和读写屏障 : ZGC确实使用了读写屏障。读写屏障是一种在对象读取和写入操作时自动执行的额外操作,用于维护垃圾收集器的某些属性。 在ZGC中,读写屏障主要用于两个目的: 并发可重定

    2024年02月07日
    浏览(45)
  • 彻底弄懂StringBuffer与StringBuilder的区别

    一问道StringBuffer与StringBuilder的区别,张口就来StringBuffer是线程安全的,因为它相关方法都加了synchronized ,StringBuilder线程不安全。没错,确实如此,但是我们查看过源码会发现StringBuffer是从jdk1.0就开始了,StringBuilder是从jdk1.5开始的。于是我就产生这样一个疑问,既然已

    2024年02月10日
    浏览(41)
  • [javascript核心-04]彻底弄懂Promise异步编程

    本文github地址:JavaScript_Interview_Everything 大前端知识体系与面试宝典,从前端到后端,全栈工程师,成为六边形战士 1.1. 快速上手 01快手上手.js 02.若传入的是另一个promise对象,则状态由传入的promise对象决定 03.若传入了一个实现了 then 方法的对象,则执行该then方法且由此方法

    2024年02月08日
    浏览(41)
  • 彻底弄懂Java中的MultipartFile接口和File类

            不管是在项目中还是日常需求,我们总是有操作文件数据的需求,Java中操作文件不可避免就要使用File类,而Spring中为我们提供了一个操作文件的接口,通过该接口我们可以获取用户上传的文件对象并写入文件系统中。 前言 一、File类 二、MultipartFile接口 2.1 源码和

    2024年02月04日
    浏览(46)
  • 一篇文章彻底弄懂Golang私有仓库配置问题

    一般通过 go get 拉取的是公共仓库的代码(如: github.com中的代码),是不需要任务权限就能拉下来。但当我们配置的私有仓库一般都需要用户名密码来登录才能拉取代码,所以私有仓库主要是解决认证问题。 在早期版本的Go中,“go get”用于构建和安装包。现在,“go get”专门用

    2024年01月16日
    浏览(47)
  • 一篇文章带你彻底弄懂Java的==符号

    本篇文章6735字,大概阅读时间20分钟。本文中使用到的JDK版本为1.8.0_301 目录 ==符号的定义 基本类型中==符号的判断 String类型中==符号的判断         在Java中==符号的作用分为两类:         1:==符号在八种基本类型的作用是比较对应基本类型的 数值是否相等         2:

    2024年02月08日
    浏览(54)
  • 一文带你彻底弄懂js事件循环(Event Loop)

    JavaScript事件循环是JavaScript运行时环境中处理异步操作的机制。它允许JavaScript在执行同步代码的同时处理异步任务,以避免阻塞线程并提供更好的用户体验。 本文将在浏览器异步执行原理基础上带你彻底弄懂js的事件循环机制。 js是单线程的,也就是说同一时刻只能做一件事

    2024年02月08日
    浏览(50)
  • 彻底弄懂ip掩码中的网络地址、广播地址、主机地址

    IP掩码(或子网掩码)用于确定一个IP地址的网络部分和主机部分。它是一个32位的二进制数字,与IP地址做逻辑与运算,将IP地址划分为网络地址和主机地址两部分。 在理解IP地址段中的网络地址、广播地址和主机地址之前,首先需要了解IP地址的构成。IP地址由网络号和主机

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包