位字节信息存储
扫描上方二维码可观看知识点讲解视频
一个二进制的0或1就是一位(Bit,又称为“比特”,简写为b),是计算机存储和处理信息的最基本的单位。在实际应用时,一次只处理一位效率较低,因此一般会一次处理多个位。例如在内存中,一个内存单元就有8位,也就是一字节(Byte,简写为B)。
一般来说,位、字节、字与双字可以定义如下。
· 位(Bit,b):表示一个二进制数码0或1,是计算机存储和处理信息的最基本的单位。
· 字节(Byte,B):一个字节由8位组成。它表示作为一个完整处理单位的8个二进制数码。
· 字(Word,W):16位为一个字,它代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算单位。
· 双字(Double Word,DW):通常称16位是一个字,32位是一个双字,64位是两个双字。
小知识
(1)KB与Kb
在存储与处理数据时,一般以字节(B)为单位,而在网络中传输数据时,一般以位(b)为单位,也称为比特流,所以在安装了10M宽带的时候,实际带宽是10Mb,下载速度上限只有10/8=1.25MB/S。
(2)KB/MB/GB/TB与KiB/MiB/GiB/TiB
KB是kilobyte的缩写,指的是千字节,而KiB是kilo binary byte的缩写,指的是千位二进制字节。
更直观地,有:
1KB=1000 Byte
1MB=1000KB=1000000Byte
1GB=1000MB=1000000KB=1000000000Byte
1TB=1000GB=1000000MB=1000000000KB=1000000000000Byte
1KiB=1024Byte
1MiB=1024KiB=1048576Byte
1GiB=1024MiB=1048576KiB=1073741824Byte
1TiB=1024GiB=1048576MiB=1073741824KiB=1099511627776Byte
在计算机系统中,所有的信息都由二进制串表示,因此如果想从这些二进制串中获取有效信息,必须要结合上下文,或者说要根据已有的约定和环境信息,才能得到二进制串所要表达的内容。
例如,我们接收到一个32位二进制串“0100 1000 0100 1110 0101 0101 00100001”:
· 如果约定发送的是四个字符,并且采用的是ASCII编码,那么这个32位的二进制串就表示四个字符“HNU!”。
· 如果约定发送的是一个整数,并且最左边的是最高位,最右边的是最低位,那么这个32位二进制串表示的是整数128 443 896 369。
· 如果约定发送的是一个整数,并且最左边的是最低位,最右边的是最高位,那么这个32位二进制串表示的是整数261 785 077 266。
· 如果约定发送的是一个小数,前面16位是整数部分,最左边是最高位,最右边是最低位,后面16位也是一个整数,但表示这个数的小数部分,最左边是最高位,最右边是最低位,那么这个32位二进制串表示的是小数122 494.303 665。
从上面的例子可以看出,一个二进制串所代表的含义与运行环境及规定(统称为上下文)有关,而且这种规定不仅可以包括对数据的说明,也可以包括对数据的操作,即指令。例如,某台计算机每次读取外界输入的四个字节,即32位二进制串,并有如下规定。
· 如果第一个字节的第一位是0,就表示后面三个字节都是数据并且显示在屏幕上。
⚪ 如果第一个字节的第二位、第三位与第四位是000,那么后面三个字节代表三个ASCII字符。
⚪ 如果第一个字节的第二位、第三位与第四位是001,那么后面三个字节代表一个整数,并且最左边为最高位。
⚪ 如果第一个字节的第二位、第三位与第四位是010,那么后面三个字节代表一个整数,并且最右边为最高位。
⚪…
· 如果第一个字节的第一位是1,那么第一个字节的后面7位为操作指令。
⚪ 如果第一个字节的后面7位为0000000,那么计算机会停机。
⚪ 如果第一个字节的后面7位为0000001,那么计算机将把第二个字节和第三个字节的值看成两个整数并进行相加,结果显示在屏幕上。
⚪ 如果第一个字节的后面7位为0000010,那么计算机将把第二个字节和第三个字节的值看成两个整数并进行相减,结果显示在屏幕上。
⚪…
总的来说,在计算机中,数据与指令都是二进制串,在使用时,必须通过各种规定来进行区分。
上面提到,如果接收到一个32位的二进制串“0100 1000 0100 1110 0101 0101 00100001”,并约定其是一个整数,那么定义最左边的位是最高位还是最右边的位是最高位将会导致值有很大的差别。
为了便于解释,我们用十进制数字来举例。假设有一个数字,其形式为4321。显然,如果左边是最高位(这是我们最熟悉的方式),那么该数字就是四千三百二十一,而如果右边是最高位,那么该数字就是一千二百三十四。
当我们在计算机中保存4321时,假设每个字节保存一个数字,那么需要分配4个字节(假设这4个字节的地址是0x101~0x104)来保存4321,这时可以两种方式来保存:第一种方式是低地址保存最高位,也就是0x101保存4、0x102保存3等,这种方式称为大端法,大多数IBM和Sun Microsystems的机器都采用这种方式;第二种方式是低地址保存最低位,也就是0x101保存1、0x102保存2等,这种方式称为小端法,大多数Intel兼容机都采用这种方式。
值得注意的是,在涉及数字时才有大端和小端的概念,因为要区分最高位在哪里,而如果是一个字符串“4321”,那么就有一个统一的规则:0x101保存字符串的第一个字符'4',0x102保存字符串的第二个字符'3'等。