zoukankan      html  css  js  c++  java
  • 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

        计算机底层都以补码的方式来存储数据!
  • 相关阅读:
    PAT 甲级 1027 Colors in Mars
    PAT 甲级 1026 Table Tennis(模拟)
    PAT 甲级 1025 PAT Ranking
    PAT 甲级 1024 Palindromic Number
    PAT 甲级 1023 Have Fun with Numbers
    PAT 甲级 1021 Deepest Root (并查集,树的遍历)
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯VIP 算法训练 无权最长链
    Java实现 蓝桥杯 算法提高 抽卡游戏
    Java实现 蓝桥杯 算法提高 抽卡游戏
  • 原文地址:https://www.cnblogs.com/klvchen/p/14158908.html
Copyright © 2011-2022 走看看