今天看到一篇文章,对自己学习到的内容做一下整理。
首先,大家都知道,关于内存的保存单位之间的换算关系,
1kb = 1024b
1MB = 1024kb
1GB =1024MB
那么,问题来了,1Kb = 1024b,这个b是什么?
b是指字节,即 Byte (拜特)
byte是多大呢?byte和bit又有什么关系呢?
当提到这个问题的时候,我们就需要往更深一点的底层思考一下。计算机的识别语言是二进制,即用0和1来表示任意的字符,我们把存储一个0或者一个1所占的空间定义为1bit(比特),
同时规定1byte = 8bit
为什么会有 1byte = 8bit 呢?
我们知道,一开始的编程,是把程序通过编码转码规则,转换成二进制来存储,最初的编码规则是使用ASCII(规定每个“字符”分别用一个字节还是多个字节存储,用哪些字节来存储,这个规定就叫做“编码”。(其实际是对字符集中字符进行编码,即:每个字符用二进制在计算中表示存储) )
而标准的ASCII码由96个字母和32个符号组成,总共96+32=128个字符,用二进制来表示128个字符,则需要7位,而由于7位还还不够1个字节,而电脑的内部常用字节来用处理,每个字节中多出来的最高位用0替代;
在mysql中
byte型:1个字节(二进制8位)
short型:2个字节(二进制16位)
int型:不管数字是几,都占用4个字节(二进制表示32位:00000000 00000000 00000000 00000000)
long型:8个字节(二进制64位)
位、字节、字符的区别
位(bit):是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数。
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写 B 来表示,1B(byte,字节)= 8bit(位)
字符:是指计算机中使用的字母、数字、字和符号
ASCIIS码: 1个英文字母(不分大小写)= 1个字节的空间
1个中文汉字 = 2个字节的空间
1个ASCII码 = 一个字节
UTF-8编码:1个英文字符 = 1个字节
英文标点 = 1个字节
1个中文(含繁体) = 3个字节
中文标点 = 3个字节
Unicode编码:1个英文字符 = 2个字节
英文标点 = 2个字节
1个中文(含繁体) = 2个字节
中文标点 = 2个字节