基本数据类型大小 字符集、编码规范(gdk utf-8等)

 

 

 

位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。

字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写  B  来表示,1B(byte,字节)= 8bit(位)

字符:是指计算机中使用的字母、数字、字和符号

 

 

 

基本单位都是字节(byte),1个字符是2个字节

类型        存储需求        bit数                  取值范围     

byte              1字节           1*8      (-2的31次方到2的31次方-1)
boolean     1字节           1*8                 falsetrue
char              2字节      2*8
short             2字节           2*8             -32768~32767
int               4字节           4*8      (-2的63次方到2的63次方-1)
long              8字节           8*8                 -128~127
float              4字节           4*8            float类型的数值有一个后缀F(例如:3.14F)
double             8字节           8*8         没有后缀F的浮点数值(如3.14)默认为double类型
 

编码规范
所谓字符集其实是一套编码规范中的子概念,为了显示字符,国际组织就制定了编码规范,希望使用不同的二进制数来表示代表不同的字符,这样电脑就可以根据二进制数来显示其对应的字符。我们通常就称呼其为XX编码,XX字符集。

例如:ASCII码、ISO-8859-1(不支持中文)、Unicode(全世界通用的编码规范)、GBK 编码规范,编码规范,计算机就可以在中文字符和二进制数之间相互转换。而使用GBK编码就可以使计算机显示中文字符。

编码规范子概念:

1.字库表
一套编码规范不一定包含世界上所有的字符,每套编码规范都有自己的使用场景。而字库表就存储了编码规范中能显示的所有字符,计算机就是根据二进制数从字库表中找到字符然后显示给用户滴,相当于一个存储字符的数据库。

例如:几乎所有汉字都保存在GBK 编码规范的字库表中。所以可以显示汉字,但法语,俄语并不在其字库表中,所以GBK不能显示法语,俄语等不包含在其中的字符。

2.编码字符集(字符集),存放二进制数
我们平时说的字符集就是这个。在一个字库表中,每一个字符都有一个对应的二进制地址,而编码字符集就是这些地址的集合。

例如:在ASCII码的编码字符集中,字母A的序号(地址)是65,65的二进制就是01000001。我们可以说编码字符集就是用来存储这些二进制数的。而这个二进制数就是编码字符集中的一个元素,同时它也是字库表中字母A的地址。我们根据这个地址就可以显示出字母A。

结论:字符集和字库表一一对应,相互转换,这是电脑识别字符的关键。

3.字符编码(编码方式)
知道字库表和编码字符集后,我们就可以直接使用二进制地址来得到字符了。

但直接使用字符对应的二进制地址来显示文字是十分浪费的,Unicode 编码规范中包括了几百万个字符,想要包括几百万个不同的字符,起码需要3个字节的容量,为了方便将来扩展,Unicode还保留了更多未使用的空间,最多可以存储4个字节的容量。

因此为了区分每个字符,哪怕是00000000 00000000 00000000 00001111这种其实只占了1个字节的字符,我们也要为他分配4个字节的空间,这就导致一个可以用1G保存的文件,现在需要4G才能保存,这是极其浪费的做法。

于是程序员制定了一套算法来节省空间,而每种不同的算法都被称作一种编码方式(下文中为了便于理解都将使用编码方式来称呼字符编码)。一套编码规范可以有多种不同的编码方式,不同的编码方式有不同的适应场景。

例如:UTF-8就是一种编码方式,Unicode是一种编码规范。此外,Unicode还有UTF-16,UTF-32这两种编码方式。不同的编码方式节约的空间不同。

总结:一个较短的二进制数,通过一种编码方式,转换成编码字符集中正常的地址,然后在字库表中找到一个对应的字符,最终显示给用户。

 

常见编码规范:

1、ASCII码,是最早产生的编码规范,一共包含00000000~01111111共128个字符,可以表示阿拉伯数字和大小写英文字母,以及一些简单的符号

2、GBK全称《汉字内码扩展规范》,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字。GBK字符集中所有字符占2个字节,不论中文英文都是2个字节。 没有特殊的编码方式,习惯称呼GBK 编码。一般在国内,汉字较多时使用

3、SO-8859-1收录的字符除ASCII收录的字符外,还包括西欧语言、希腊语、泰语、阿拉伯语、希伯来语对应的文字符号;ISO-8859-1是不支持中文的

4、Unicode,全世界通用的编码规范。Unicode最多可以保存4个字节容量的字符。也就是说,要区分每个字符,每个字符的地址需要4个字节。这是十分浪费存储空间的,于是,程序员就设计了几种字符编码方式,比如:UTF-8,UTF-16,UTF-32。

注意:UTF-8不是编码规范,而是编码方式

 

String chinese="汉";
//使用UTF-8编码方式进行编码。
byte[] bs = chinese.getBytes("UTF-8");
for (byte b : bs) {
    System.out.print(b+" ");
}" "); }

输出结果:-26 -79 -119   //可见utf-8的编码方式下,1个汉字对应3个字节

String utf8 = new String(bs,"UTF-8");
System.out.println(utf8);

输出:汉  //字节转换成字符

String gbk = new String(bs, "GBK");
System.out.println(gbk);

输出:姹?

 

 

字母/数字/英文标点

中文汉字/中文标点

换行符

Win/Unix/mac

空白文件大小

空格

ansi

1

2

1

1

1

0

1

Utf8

1

3

2

1

1

0

1

Utf8-bom

1

3

2

1

1

3

1

GBk2312

1

2

2

1

1

0(不为空前面加3)

1

 

转自:
————————————————
版权声明:本文为CSDN博主「笑我归无处」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42068856/article/details/83792174

posted on   潮流教父孙笑川  阅读(449)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示