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引脚取反,输出音频方波}/************************…

matlab 功率谱密度 汉宁窗_信号系统的一些基本概念

泄露截断会使谱分析精度受到影响。如果时域信号是周期性的,而截断又按整周期取数,信号截断不会产生问题,因为每周期信号都能代表整个周期信号变化情况。若不是整周期截取数据,则截断将使信号波形两端产生突变,所截取的…

拟真机器人拯救者怎么来_笔点聊科技 篇九:3499起、卷土重来?理性聊聊刚发布的联想拯救者手机Pro...

笔点聊科技 篇九:3499起、卷土重来?理性聊聊刚发布的联想拯救者手机Pro2020-07-23 10:44:270点赞0收藏0评论创作立场声明:想让消费者接受品牌,真金白银买回家还感觉良好,继而产生源源不断的品牌口碑,在强者…

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

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

华为双前置摄像头_国产手机集体爱上“双打孔屏”,前置双摄像头将成2020年标配?...

今年2月21日,三星S10采用了前置双摄像头的配置,而且是打孔屏,两颗摄像头分别是1000万像素的双核对焦主摄,以及800万像素的景深副摄,不俗的硬件辅以算法虚化,在当时拿下了Dxomark前摄第一的宝座。即便是10个…

python对文件的_python 对文件操作

#!/usr/bin/env python#-*- coding:utf-8 -*-defFind(class_name):class_list[]tagFalsewith open(‘data‘, ‘r‘, encoding‘utf8‘) as f:for line inf:if line.strip() ‘班级:{0}班‘.format(class_name.strip()):class_list.append(line)tagTruecontinueif …

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

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

python3 collections模块 tree_第30天: Python collections 模块

by 豆豆1.简介collections 是 python 的内置模块,提供了很多方便且高性能的关于集合的操作,掌握这些知识有助于提高代码的性能和可读性。2.常用功能2.1 namedtuple 功能详解namedtuple() 返回一个新的元组子类,且规定了元组的元素的个数&…

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…

mysql创建个自增id的表_MySQL数据库--怎样创建一张用户表,ID设置为自动增长列(新手必会)...

-- phpMyAdmin SQL Dump-- version 3.3.8.1-- http://www.phpmyadmin.net---- 主机: w.rdc.sae.sina.com.cn:3307-- 生成日期: 2011 年 08 月 19 日 16:18-- 服务器版本: 5.1.47-- PHP 版本: 5.2.9---- 数据库: app_tushow---- ----------------------------------------------…

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

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

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

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

mysql 数据库设置mysql注入_MYSQL数据库浅析MySQL的注入安全问题

《MYSQL数据库浅析MySQL的注入安全问题》要点:本文介绍了MYSQL数据库浅析MySQL的注入安全问题,希望对您有用。如果有疑问,可以联系我们。如果把用户输入到一个网页,将其插入到MySQL数据库,有机会离开了发生安全问题被称为SQL注入敞开.这一课将…

php链接mysql编码错误_php 操作 mysql 数据库 编码 错误

有两行相同的代码,来自不同的 php 文件,在对 MySql 数据库(UTF-8格式)操作时,一行代码正常,一行代码异常代码1,异常update ordersystem.product Set PName333汽车 Where BianhaoX…

mysql 数据记录导出_mysql如何导出600万条记录的数据表?

目前我这么写:/*** Created by IntelliJ IDEA.* User: felix* Date: 2019-03-01* Time: 18:49*/set_time_limit(0);$servername localhost;$username ;$password ;$dbname ;$i 57007;$bingTime microtime(true);echo bing . $bingTime . s . PHP_EOL;while …

mysql sql使用序列_SQL 使用序列

SQL 使用序列序列是根据需要产生的一组有序整数:1, 2, 3 ... 序列在数据库中经常用到,因为许多应用要求数据表中的的每一行都有一个唯一的值,序列为此提供了一种简单的方法。本节阐述在 MySQL 中如何使用序列。使用 AUTO_INCREMENT 列&#x…