lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?

821523ea7b36861df0377be51d49a890.png

相信不少同学都在初学计算机之时,都被ASCII,Unicode和UFT-8等字符编码格式 搞得焦头烂额,这玩意儿到底是啥,区别是啥,为啥有这么多?

反正我刚学的时候纯粹是囫囵吞枣,为了考试潦草背一背,背后的各种问题都没有考虑,直到最近,有人问我为什么有了Unicode还要有UTF-8,我一时语塞,羞赧之余才有了今天的这篇算是入门的文章。

首先我们看一下ASCII编码,我们先不解释ASCII,先从计算机的存储来看。

众所周知,所有的信息对计算机来说都只是0和1,就像对于人类来说,所有的信息最终都会转换成对于文字的描述,对于计算机而言,0和1就是他全部的语言,这就是所说的二进制。

每个二进制位有0和1两种状态。最近大热的量子计算机,也无非使用用两个量子态│0>和│1>代替经典比特状态0和1,它的基本信息单位就不是比特了,而是量子比特。

对于一个比特而言,有0和1两种状态,而1个字节由8个比特组成,也就是有256种状态,从00000000到11111111,每个状态对应一个符号,就能表示256个符号,我们知道,计算机起源于美国,所以对于英语为母语的美国人来说,256个字符绰绰有余。因此,能表示256个字符的ASCII码一开始仅仅使用了128个,即把一个字节第一位的比特都取为0。

但是,计算机的浪潮席卷全球,美国人用的那套就行不通了,一开始是欧洲的一些国家,128个字符压根不够,所以他们把第一位的比特也拿出来,但这也只能表示258个符号,更重要的是,每个国家都是用了258个符号的字符编码没事,但是代表的字母却不一样了,这就相当于两个地区的方言。

比如我的老家问你喝了吗?意思是喝没喝水或者粥一类的东西,但是隔壁市问你喝了吗就是问你吃饭没有的意思,让这两个碰上面,肯定会造成沟通上的失误,也就是我们所说的无法有效传递信息。

因此,为了解决这个问题。Unicode出现了,它把所有的符号都纳入其中。

但是需要注意的是,Unicode只是一个符号集,还是要依赖于具体实现,也就是应该如何存储,原因是如果规定字符都使用一两个字节,那汉字就不能表示,但是都是用三四个字节,英文字母就会浪费很多内存空间,因此这就依赖于UTF家族成员,UTF家族有UTF-8,UFT-16以及UTF-32这几个成员。

UTF-8有一个很大的好处,就是它可以根据不同的符号来变化长度,这样就可以避免英文字母造成内存浪费的问题。

当然,UTF-8的编码规则也很简单:

1)对于单字节的符号,字节的第一位都为0,后面7位为这个符号的Unicode,这一点和ASCII编码是一样的。

2)对于n字节的符号,第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的Unicode码。这也就意味着,如果第一位为1,那么有多少位1,就表示当前字符占用了多少个字节。

Little endian和Big endian:

Little endian:小字节序,也叫低字节序。意思是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。

Big endian:大字节序,也叫高字节序。意思是高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。

那么问题来了,何为字节序呢?

通俗来说,字节序就是指数据在内存中的存放顺序。

例如”子“,它的Unicode编码是 5b50 ,需要用到两个字节存储,一个字节是5b,一个是50。存储的时候,5b在前,50在后,就是Big endian方式,倒过来就是Little endian方式。

今天的分享就到这里了,如果大家有什么问题,可以发在留言区。

感谢大家的观看。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git配置用户信息_git系列教程(4)-单用户配置

一般新手都会使用一个用户,要么是github,要么是gitee本地配置上个文档已经讲过本地配置,在这里就不赘述了连接github或者gitee生成ssh公钥ssh-keygen -t rsa -C "emailexample.com" 三次会车即可生成ssh key找id_rsa.pub文件mac或…

32 引脚_函数功能:定时器T0的中断服务子程序,使P3.7引脚输出音频方波

void Time0_serve(void ) interrupt 1 using 1 {TH0(8192-C)/32; //可证明这是13位计数器TH0高8位的赋初值方法TL0(8192-C)%32; //可证明这是13位计数器TL0低5位的赋初值方法sound!sound; //将P3.7引脚取反,输出音频方波}/************************…

重定向地址_JavaWeb - Servlet:重定向和转发,状态管理

Servlet JDBC 应用在 Servlet 中可以使用 JDBC 技术访问数据库,常见功能如下:查询 DB 数据,然后生成显示页面,例如:列表显示功能。接收请求参数,然后对 DB 操作,例如:注册、登录、修…

摸底谷歌Gemini:CMU全面测评,Gemini Pro不敌GPT 3.5 Turbo

谷歌的 Gemini 到底几斤几两?和 OpenAI 的 GPT 模型相比表现如何?CMU 这篇论文测明白了。 前段时间,谷歌发布了对标 OpenAI GPT 模型的竞品 ——Gemini。这个大模型共有三个版本 ——Ultra(能力最强)、Pro 和 Nano。研…

ddns 被解析为127.0.0.1_我为北京冬奥加油,2020.2.1-2.10冬奥知识分享

2020.02.01中国冬梦,世界飞跃,我是果雪儿小小志愿者仇懿琛,我为北京冬奥加油,今天冬奥知识分享——冬奥会历史上那些非凡而又卓越的运动员(十一)明星运动员:米特迈尔第十二届冬季奥运会时间:1976.02.04-02.…

乱码 转ios_王者荣耀:转区数量提升25倍,教你解决检测异常,IOS也有艾琳了

王者峡谷近期最火的一个功能便是转区服务开放限量测试,由于申请的人数非常多,官方决定从今日起将测试资格由最初的2000个提升至每日开放50000个,同时由每日二次开放调整为每日一次,虽说测试资格数量提升了25倍,但依旧有…

冰豹lua驱动设置_卡宴?卡宴!——冰豹ROCCAT Kain 120 AIMO开箱

前言原本一直在用罗技的G700s,但是鉴于众所周知的“电老虎”原因,再加上重量的问题,一直想换一个鼠标试试,虽然不太玩游戏,但是平时使用也喜欢高DPI的设置、另外还稍许有点汗手的问题,所以对鼠标长时间时候…

vue内检测是否有swiper_vue.js怎么用swiper

vue.js中使用swiper的方法:首先下载【swiper.js】;然后在【main.js】中全局引入【swiper.js】;最后在模板中配置相关内容即可。【相关文章推荐:vue.js】vue.js中使用swiper的方法:1、下载swiper.jsnpm install vue-awe…

从sqlite 迁移 mysql_将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库

下面我们就来说说如何从 SQLite 迁移到 MySQL 。准备首先你要已经安装好 MySQL 数据库。如果你用的是 Ubuntu 系统,请参考这篇文章。其他系统请参考各自对应的文档。导出当前数据点击蓝色的 EXPORT 按钮将当前数据库中的所有数据导出并下载到本地,默认文…

易语言mysql验证_易语言MySql注册登录

用到的主要易语言命令:连接MySql (, , , , )执行SQL语句 (, )取记录集 ()读字段值 (, , )释放记录集 ()断开MySql ()命令介绍:①、连接MySql (, , , , ):顾名思义,这条命令是用来连接你的MySql数据库的,返回一个MySql句…

java 如何跟多个字符串比较_Stack Overflow上370万浏览量的一个问题:如何比较Java的字符串...

在逛 Stack Overflow 的时候,发现了一些访问量像喜马拉雅山一样高的问题,比如说这个:如何比较 Java 的字符串?访问量足足有 370万,这不得了啊!说明有很多很多的程序员被这个问题困扰过。截止到目前为止&…

mysql+distinct+max_MySQL中distinct与group by之间的性能进行比较

最近在网上看到了一些测试,感觉不是很准确,今天亲自测试了一番。得出了结论,测试过程在个人计算机上,可能不够全面,仅供参考。测试过程:准备一张测试表CREATE TABLE test_test (id int(11) NOT NULL auto_i…

java生成大素数_用BigInteger实现大素数生成算法

一.通过素数的基本性质根据素数的性质(除了1和此整数(n)自身外,无法被其他自然数整除的数):即从2到n/2的数都不能整除n。1 public static booleanisPrime(BigInteger num)2 {3 BigInteger two BigInteger.valueOf(2);4 for(BigInteger i tw…

JAVA shell export_Java 远程调用Shell

Java 远程调用Shell上一篇 /下一篇 2014-01-21 13:29:22/ 个人分类:JavaRemote Shell Scripts need to export the ENV variable again.public class JavaRemoteRunShell {private Connection conn;private String ipAddr;private String charset Charset.default…

JAVA不同类型数组重载_JAVA补课-DAY1:方法重载和数组

IDEA简单方法使用快捷键CtrlAltL&#xff0c;IDEA代码格式化Ctrl/单行注释&#xff0c;重复按取消CtrlShift/多行注释&#xff0c;重复可取消5.fori<>for (int i 0; i < 5; i)本日重点方法重载(overload)/*方法重载(Overload)&#xff0c;多个方法名称相同&#xff0…

华为s2600t java_华为S2600T存储+华为RH2288H V3服务器

面对复杂多变的国际形势和国内艰巨繁重的改革发展稳定任务&#xff0c;维持稳定就显得格外重要。平安城市视频监控建设项目为了保证城市交通和城市治安的安全&#xff0c;需要对人员集中的重要场所和道路上监控进行建设和改造。视频监控记录的数据必须具有很高的安全性&#xf…

华为java8_Java8 Stream

简单认识Java streamJava8出了一个stream流式编程&#xff0c;在开发中或多或少用到接触过。怎么说呢&#xff01;举个例子把&#xff0c;一起我们在遍历一个集合的时候&#xff0c;我们是从外部去遍历的&#xff0c;然后才能拿到结果&#xff0c;这样来效率就会变得相对低一点…

ascii码扩展 php,php与ascii码

首先 简单说一下历史&#xff0c;ascii码最开始是美国人搞出来的&#xff0c;用来干什么呢&#xff1f;我们知道&#xff0c;计算机只知道0和1&#xff0c;如果我们要计算机识别除了01之外的字符&#xff0c;例如 a&#xff0c;我们要先告诉计算机‘1100001’就是a。跟摩斯密码…

php手机电子相册,免费电子相册制作软件 手机电子相册制作软件

照片配上音乐加上炫酷的过渡效果点缀图片和文字说明&#xff0c;轻松制作成各种视频格式的电子相册。不需要专业的视频制作知识&#xff0c;点几下鼠标就可以把上百张数码照片制作成电子相册。视频相册可以在电脑上用播放器收看或者在高清电视上播放。也可以刻录成DVD、VCD光盘…

php+spl+栈,PHP SPL标准库之数据结构栈(SplStack)介绍

栈(Stack)是一种特殊的线性表&#xff0c;因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈)SplStack就是继承双链表(SplDoublyLinkedList)实现栈。类摘要如下&#xff1a;简单使用如下&#xff1a;//把栈想象成一个颠倒的数组$stack new SplStack();/*** 可见栈和双…