计算机 数据类型

本文介绍了计算机数据类型,包括java基本类型、ASCII码、Unicode和UTF-8编码。讨论了ASCII的7位编码,Unicode的多字节表示,以及UTF-8的变长编码规则。通过例子解释了字符如何在不同编码中转换,如汉字'严'在Unicode和UTF-8中的表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java基本类型:

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

计算机数据类型:

bit 二进制位:0和1两种状态,
byte 字节:8个bit位,可以组合出256种状态(00000000~11111111)

HEX (hexadecimal) 十六进制
DEC (decimal) 十进制
OCT (octal) 八进制
BIN (binary) 二进制

ASCII 码

背景:上个世纪60年代,美国对英语字符与二进制位之间的关系,制定了一套ASCII编码。
特点:一共规定了128个字符的编码,只占用了一个字节的后面7位,最前面的一位统一规定为0。
例如:
【SPACE】 是 DEC【32】 BIN【00100000】
【A】 是 DEC【65】 BIN【01000001】
【a】 是 DEC【97】 BIN【01100001】

Unicode

背景:世界上存在着多种编码方式,同一个二进制数字可以被解释成不同的符号。因此ISO (国际标谁化组织)废了所有的地区性编码方案,重新搞一个包括了地球上所有字符的编码Unicode。
特点:只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。结果造成了许多种不同的二进制格式实现方式。
例如:
【A】 是 HEX【41】DEC【65】 BIN【01000001】
【严】 是 HEX【4E25】DEC【20005】 BIN【100111000100101】存储至少需要2个字节。
表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。

UTF-8

背景:互联网的普及,出现了一种统一的Unicode实现方式UTF-8。还有其他的实现方式 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示)等,不过很少用到。
特点:它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
编码规则:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

下表总结了编码规则,字母x表示可用编码的位。

Unicode符号范围      |        UTF-8编方式
(十六进制)           |        (二进制)
--------------------+---------------------------------------------
0000 0000-0000 007F | 0xxxxxxx
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

例如:
【严】 的Unicode是 HEX【4E25】BIN【100111000100101】
根据上表,可以发现HEX【4E25】处在第三行的范围内(0000 0800 - 0000 FFFF),因此严的 UTF-8 编码需要三个字节,即格式是1110xxxx 10xxxxxx 10xxxxxx。然后,从严的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,严的 UTF-8 编码是11100100 10111000 10100101,转换成十六进制就是E4B8A5。

转换格式

最简单的办法就是利用记事本程序notepad.exe进程转换。
在这里插入图片描述
里面有四个选项:ANSI,Unicode,Unicode big endian和UTF-8。
1)ANSI是默认的编码方式。对于英文文件是ASCII编码,对于简体中文文件是GB2312编码(只针对 Windows 简体中文版,如果是繁体中文版会采用 Big5 码)。
2)Unicode编码这里指的是notepad.exe使用的 UCS-2 编码方式,即直接用两个字节存入字符的 Unicode 码,这个选项用的 little endian 格式。
3)Unicode big endian编码与上一个选项相对应。
4)UTF-8编码,也就是上一节谈到的编码方法。

参考资料:
https://blog.youkuaiyun.com/Deft_MKJing/article/details/79460485
https://blog.youkuaiyun.com/qq_25665807/article/details/77370309

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值