• 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

        计算机底层都以补码的方式来存储数据!
  • 相关阅读:
    事务
    排序算法
    二维数组中的查找
    在Linux中安装Matlab
    null和“”的区别
    【学习笔记】〖九度OJ〗题目1433:FatMouse
    【学习笔记】〖九度OJ〗题目1464:Hello World for U
    year:2017 month:8 day:1
    year:2017 month:07 day:31
    year:2017 month:7 day:27
  • 原文地址:https://www.cnblogs.com/klvchen/p/14158908.html
Copyright © 2020-2023  润新知