Byte(字节)是计算机中数据存储的基本单位,通常用于衡量存储容量,比如移动硬盘的容量可以是1TB。
一个字节由8个比特(bit)组成。比特是最小的数据单位,它可以是0或1,用于表示二进制信息。
数据传输时通常以比特为单位进行计量,比如家里的宽带速度可能是以兆比特(Mbps)或千兆比特(Gbps)为单位。当我们说家里的宽带是100Mbps时,意味着每秒可以传输100兆比特的数据。
要将比特转换为字节,可以使用以下关系:1字节 = 8比特。因此,如果要将100Mbps转换为字节,需要将其除以8。
比特(Bit):
字节(Byte):
在实际应用中,比特和字节的关系可以这样理解:字节是比特的集合,而比特是构成字节的单个砖块。计算机处理数据时,通常以字节为单位进行读写和传输,但底层的数据传输和存储则是由单个比特组成的。
public static void main(String[] args) {
String a = "a";
byte[] bytes = a.getBytes();
for (byte b : bytes) {
// 打印发现byte实际上就是ascii码
System.out.println(b);
}
}
public class ByteBit {
public static void main(String[] args) {
// 定义一个字符串变量a
String a = "a";
// 将字符串a转换为字节数组
byte[] bytes = a.getBytes();
// 遍历字节数组中的每个字节
for (byte aByte : bytes) {
// 将字节转换为整数值
int c = aByte;
// 打印出整数值
System.out.println(c);
// 将整数值转换为二进制字符串表示
String s = Integer.toBinaryString(c);
// 打印出二进制字符串表示
System.out.println(s);
}
}
}
将字符串"a"转换为字节数组,并将每个字节对应的整数值和二进制表示打印出来
1100001 打印出来应该是8个bit,但前面是0,没有打印 ,从打印结果可以看出来,一个英文字符 ,占一个字节
这段代码演示了根据不同的编码格式(UTF-8和GBK)将字符串转换为字节数组,并打印出每个字节的整数值和二进制表示。
/**
* 根据编码的格式不一样,对应的字节也不一样
*
* 如果是UTF-8:一个中文对应的是三个字节
* 如果是GBK : 一个中文对应的是二个字节
* <p>
* 如果是英文,就无所谓编码格式
*/
public static void main(String[] args) throws Exception {
// 定义一个字符串变量a,包含一个中文字符
String a = "小";
// 根据UTF-8编码格式将字符串转换为字节数组
//byte[] bytes = a.getBytes();
// 根据GBK编码格式将字符串转换为字节数组
//byte[] bytes = a.getBytes("GBK");
// 根据UTF-8编码格式将字符串转换为字节数组
byte[] bytes = a.getBytes("UTF-8");
// 遍历字节数组中的每个字节
for (byte aByte : bytes) {
// 打印出每个字节的整数值
System.out.println(aByte);
// 将每个字节的整数值转换为二进制字符串表示,并打印出来
String s = Integer.toBinaryString(aByte);
System.out.println(s);
}
}
根据不同的编码格式,一个中文字符所占的字节数也不同,UTF-8编码下一个中文字符通常占三个字节,而GBK编码下通常占两个字节。
byte[] bytes = a.getBytes("GBK");
public static void main(String[] args) throws Exception {
String a = "a";
byte[] bytes = a.getBytes();
for (byte aByte : bytes) {
System.out.println(aByte);
String s = Integer.toBinaryString(aByte);
System.out.println(s);
}
}
根据编码格式的不同,字符所占的字节数也不同,这是因为不同的编码方式使用不同的规则来表示字符。这里提到了两种常见的字符编码格式:UTF-8和GBK。
对于英文字符,由于其在各种编码格式下都是用相同的规则表示,因此无论使用何种编码格式,英文字符都只占一个字节。