# 2 位与字节

# 2.1 位

我们知道人类是使用十进制进行运算的,而计算机是使用二进制的,为什么呢?

因为计算机是靠集成电路运行的,有电经过电子元器件就表示1,没电经过电子元器件就表示0,用这两种状态表示,设计简单,信号的抗干扰性更强。

所以一位数,用十进制可以表示 0、1、2、3、4、5、6、7、8、9 这10种可能,也就是个位数就可以表示10种可能。

而计算机是二进制,一位数只能表示 0、1 这两种可能。


所以什么是位?

位是计算机中最小的数据单元,一位只能表示 0 或 1。

# 2.2 字节

那什么是字节呢?

字节是由 构成的,1个字节由8个位组成,1字节=8位。

用英文单位表示:1 byte = 8 bit,1个字节等于8比特,位也叫比特。


有了位为什么需要字节?

1个字节是8位,字节能表示更大范围的数据,能包含更多的信息,所以计算机体系中内存地址和数据传输都是以字节为基本单位进行的。

虽然 更小,但是一般不能直接操作 ,而是以 字节 为单位进行操作 。所以字节是计算机处理的最小数据单位。


计算机中常用的单位,如下:

1 byte = 8 bit
1 KB = 1024 byte
1 MB = 1024 KB
1 GB = 1024 MB
1 TB = 1024 GB
1
2
3
4
5

这些单位之间的换算基于二进制,因此它们的换算是基于 1024 而不是 1000。

# 2.3 数据的存储

在计算机中,任何数据都是0和1构成的,例如文字、图片、视频最终也是0和1。

换而言之,所有的数据都是数字,都是使用一个一个字节存储的。

1个字节表示的数据范围

前面说了 1 个字节由 8 位构成,1个位表示两种数值,那么1个字节表示的数据范围就是 2 的 8 次方:2^8 = 256,即 0 ~ 256。

二进制表示的话,也就是从 00000000 ~ 11111111。

这样只能表示0和正数,如果要表示负数的话,需要用第1位来表示符号位,后面只能有7位表示数字了。

那么表示的范围是 -128 ~ 127。

为什么是这个范围,需要继续学习后面的 原码、反码、补码


如果要保存更大的数据,那么就需要使用多个字节。

例如,一般在编程语言中,定义整数,有一个 int 类型,它是占用4个字节的,也就是使用它来保存整数,不论保存的是1,还是100,它都是使用4个字节来保存数据。

保存0的时候,数据是这样的:

00000000 00000000 00000000 00000001			# 为了看清楚每个字节,使用空格分开
1

保存100,数据是这样的:

00000000 00000000 00000000 01100100
1

所以一般在编程语言中,为了保存数据和节省内存的原因,会存在很多不同长度的数据类型。

例如 :byte(1个字节)、short:2个字节、int(4个字节)、long(8个字节)

当然根据语言不同,或运行环境的不同,会有不同,有的语言长度会动态调整,这里只是举个例子。