Code

Summary

  • 基础知识

bit

  • 二进制数系统中,每个 0 或 1 就是一个位(bit),位是数据存储的最小单位。其中8bit就称为一个字节(Byte)。
  • 计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32位数据。

Byte

  • 在Java中是整数类型,占用 1byte 空间。
  • 取值范围是 27271,-128~127,这里显示的是十进制数。
  • byte b1=-128 // result = {Byte@18654} 前面是类型,后面是内存地址?

char

  • Java 也以 UTF-16 作为内存的字符存储格式。
  • 一个 Java 的 char 类型表示一个 UTF-16 编码的代码单元,占用 2byte 空间。
  • 取值范围是 02161,0~65535,所以不能代表全部的中日韩(CJK)字符。
  • char c1 = 'A' result = {Character@18722}

int(Integer)

  • 在Java中是整数类型,占用 4byte 空间。
  • 取值范围是 2312311,这里显示的是十进制数。
Integer.toHexString(int)              // 10进制数转换成16进制字符
Integer.toBinaryString((int) 'b')     // 10进制数转换成2进制字符
Integer.toBinaryString(Integer.parseInt("fa", 16)) // 16进制转换成2进制


// 一个 char 可以对应一个 Integer,可以相互转换
int b = (int)'我'
char a = (char)25105

Integer:

String

String str = new String(c1)        // 将byte[*] 转换为字符串
char[] chars = str1.toCharArray()  // 将 String 转换成 charArray

疑问

字符转换成byte数组,由于使用不同的编码方式,数组的大小不一样? 按照Java 的内存编码机制,这里不应该都是 2byte吗?

'A'.getBytes()  // result = {byte[1]@18123}
'我'.getBytes() // result = {byte[3]@18123}

Reference

https://baike.baidu.com/item/%E6%AF%94%E7%89%B9/3431582?fr=aladdin

比特(BIT,binary system),计算机专业术语,是信息量单位,是由英文BIT音译而来,同时也是二进制数字中的位,信息量的度量单位,为信息量的最小单位。哈特莱(R.V.L Hartley, 1890-1970) 1928年认为对信息量选用对数单位进行度量最合适。

Bit,是Binary digit(二进制数)位的缩写,是数学家John Wilder Tukey提议的术语(可能是1946年提出,但有资料称1943年就提出了)。这个术语第一次被正式使用,是在香农著名的《信息论》,即《通信的数学理论》(A Mathematical Theory of Communication)论文之第1页中。

原文地址:https://www.cnblogs.com/duchaoqun/p/13093905.html