您的当前位置:首页正文

Java基础(ASCII码,Unicode编码,UTF-8,二进制)

2024-06-15 来源:好走旅游网
Java基础(ASCII码,Unicode编码,UTF-8,⼆进制)ASCCII 码

在计算机内部,所有数据都使⽤⼆进制表⽰。每⼀个⼆进制位(bit)有0和1两种状态,因此8个⼆进制位就可以组合出256种状态,这被称为⼀个字节(byte)。⼀个字节⼀共可以⽤来表⽰256种不同的状态,每⼀个状态对应⼀个符号,就是256个符号,从0000000到11111111。缺点:

不能表⽰所有字符。

相同的编码表⽰的字符不⼀样:⽐如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel

Unicode 编码

Unicode 编码,将世界上所有的符号都纳⼊其中。每⼀个符号都给予⼀个独⼀⽆⼆的编码,使⽤ Unicode 没有乱码的问题。

缺点: Unicode 只规定了符号的⼆进制代码,却没有规定这个⼆进制代码应该如何存储:⽆法区别 Unicode 和 ASCIl;计算机⽆法区分三个字节表⽰⼀个符号还是分别表⽰三个符号。另外,我们知道,英⽂字母只⽤⼀个字节表⽰就够了,如果 unicode 统⼀规定,每个符号⽤三个或四个字节表⽰,那么每个英⽂字母前都必然有⼆到三个字节是0,这对于存储空间来说是极⼤的浪费。

UTF-8

UTF-8 是在互联⽹上使⽤最⼴的⼀种 Unicode 的实现⽅式。

UTF-8 是⼀种变长的编码⽅式。它可以使⽤ 1-6 个字节表⽰⼀个符号,根据不同的符号⽽变化字节长度。UTF-8 的编码规则:

1. 对于单字节的 UTF-8 编码,该字节的最⾼位为0,其余7位⽤来对字符进⾏编码《等同于ASClI码》。

2. 对于多字节的 UTF-8 编码,如果编码包含n个字节,那么第⼀个字节的前n位为1,第⼀个字节的第 n+1位为0,该字节的剩余各位⽤来对字符进⾏编码。在第⼀个字节之后的所有的字节,都是最⾼两位为\"10”\",其余6位⽤来对字符进⾏编码。

class CharacterDemo{

public static void main(String[] args){

// 要在 Windows 操作系统上显⽰中⽂,必须以 ANSI 编码(即GBK 编码)保存 System.out.println(\"Hello World! 你好, 中国!\"); }}

⼆进制

Java整数常量默认是 int 类型,当⽤⼆进制定义整数时,其第32位是符号位; 当是 long 类型时,⼆进制默认占64位,第64位是符号位⼆进制的整数有如下三种形式:

1. 原码:直接将⼀个数值换成⼆进制数。最⾼位是符号位

2. 负数的反码:是对原码按位取反,只是最⾼位(符号位)确定为1。3. 负数的补码:其反码加1。计算机以⼆进制补码的形式保存

1. 正数的原码,反码,补码都相同2. 负数的补码是其反码+1

计算机底层都以补码的⽅式来存储数据!

因篇幅问题不能全部显示,请点此查看更多更全内容