一个字节是八个比特,即:1byte = 8bit; 解释:这个是一个固定的规范,除了此换算关系外,1kb= 1024byte,1m=1024kb;1G = 1024m。
1、bit 位:位是计算机中存储数据的最小单位,指二进制数中的一个位数,其值为“0”或“1”。
2、byte 字节:字节是计算机存储容量的基本单位,一个字节由8位二进制数组成。在计算机内部,一个字节可以表示一个数据,也可以表示一个英文字母,两个字节可以表示一个汉字。 1B=8bit
基本类型 | 大小(bit) | 最大值 | 最小值 | 封装类型 | 字节数(byte) |
---|---|---|---|---|---|
boolean | 1 | - | - | Boolean | 1或者4 |
byte | 1*8(1) | +127 | -128 | Byte | 1 |
char | 2*8(16) | Unicode 2^16 - 1 | Unicode 0 | Character | 2 |
short | 2*8(16) | 2^15 - 1 | -2^15 | Short | 2 |
int | 4*8(32) | 2^31 - 1 | -2^31 | Integer | 4 |
float | 4*8(32) | Float | 4 | ||
long | 8*8(64) | 2^63 - 1 | -2^63 | Long | 8 |
double | 8*8(64) | Double | 8 |
boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。这其实是运算效率和存储空间之间的博弈,两者都非常的重要。
ASCII码用1个字节,0-255共256个取值,前128位键盘上常用运算符、字母、数字等,后128位为键盘上没有的特殊字符。故2^8=256,所以一个字节就是8比特。
ASCII 一个英文字母占1个字节,一个中文汉字占两个字节
UTF-8 一个英文字母占1个字节,一个中文汉字(含繁体)占三个字节
Unicode 一个英文字母占两个字节,一个中文汉字(含繁体)占两个字节
比特bit
比特(bit)是计算机的最小单位,它的值是0或1。我们计算机储存的,网络发送的数据包,本质上都是0和1的组合,多个bit组合在一起就可以表示出不同的值,如:
bit数量 | 可以表示的值 |
---|---|
1 | 0 1 |
2 | 00 01 10 11 |
3 | 000 001 010 011 100 101 110 111 |
也就是N个bit可以表示出2的N次方的值。
字节的来由
最开始计算机只是处理数据运算,也就是0-9,加上运算符号,4bit足够了。举个例子(实际不是这样):用0000表示0,0001表示1,0010表示2,依次类推。
后来加入了字母,程序符号等,8bit也足够了,而这时诞生了ASCII编码的标准,大家就说把8bit表示出来的值叫做字节(byte)吧,于是就有了字节这个单位。
原文链接:
https://blog.csdn.net/yc1022/article/details/47811315
https://www.cnblogs.com/hujinshui/p/10212131.html
https://blog.csdn.net/M_sdn/article/details/84849245
https://blog.csdn.net/yc1022/article/details/47811315
https://www.jianshu.com/p/2f663dc820d0