注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我想我知的博客

http://chenzaixiang.blog.163.com

 
 
 

日志

 
 

计算机单位:字节(Byte)与位(bit)的理解  

2008-03-03 10:10:42|  分类: 电脑笑谈 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

作者:我想我知    Blog:http://chenzaixiang.blog.163.com(原创文章,欢迎转载,转载请保留此项)

 

我们知道,在计算机系统存储概念里一般有这样的单位换算关系

1TB(Terabyte)=1024GB(Gigabyte)

1GB=1024MB(Megabyte)

1MB=1024KB(Kilobyte)

1KB=1024B(Byte)

计算机存储容量大小以字节数来度量,1024进位制,它们的换算是2的10次方(1024)。可能有些人会感到奇怪,为什么我的120G的硬盘一旦安装到电脑上就只有110多G了呢,这是因为各种存储设备像硬盘和闪盘(MP3、U盘、存储卡等)厂商的设计都是以1000来算的,即1GB=1000MB,这是业内的标准。而微软等公司推出的操作系统却认为1GB=1024MB(软件标准),这样就造成了容量差异,因此电脑里的硬盘实际容量总是小于其标称容量,而且硬盘容量越大这个差额也越大。其实只是遵循标准不同而已。计算机用的是二进制,2的10次方是1024与十进制中的1000是同一个数量级。或者说是厂家把零头去掉了。著名硬盘厂商希捷和西部数据还为此成被告,原因就是硬盘标称与容量不相符。

B即Byte,音译拜特,字节的意思,一般以字节作为计算机存储容量基本单位。1个字节是8个二进制位(8个二进制位组成1个字节),即1Byte=8bit(八个位的组合,共有256种电路状态。1个数字=1个英文字母(字符)=1字节(Byte),即一个标准英文字母就是一个字节,它有8个比特(bit),(如A为10D,用00001010来表示,8个二进制位)。1个汉字=2个字节,即一个标准汉字有2个字节,8个bit一个字节,也就是说在计算机里1个汉字要用16个bit来表示。另外中文标点符号占2个字节,英文标点符号(,.?!%&+-*/),占1个字节,中文省略号(……)和括(破折)号(——)各占4个字节。

 

文件的大小其实就是文件内容实际具有的字节数,它以Byte为衡量单位,只要文件内容和格式不发生变化,文件大小就不会发生变化。但文件在磁盘上的所占空间却不是以Byte为衡量单位的,它最小的计量单位是“簇(Cluster)”。 

簇是磁盘分配空间的术语,是指若干个扇区构成一个分配的单元,以此为单位进行空间分配;文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区,一个扇区的容量是512字节。

但是,由于磁盘空间的利用和磁盘上文件删剪增缩等操作,同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段(每段至少是1簇),像一条链子一样存放。这种存储方式称为文件的链式存储。FAT表(文件分配表/文件系统)就是操作系统用来记录磁盘上的簇的使用情况及连接信息的。这样,操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。同理,当我们要在磁盘上保存一个文件时,操作系统通过FAT表就可以了解到哪些簇已经被占用了、哪些簇还没有被占用,并从没有被占用的簇中为这个文件分配所需的簇。也就是说为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。这些都是由FAT表来保存的。

 显然, 簇是操作系统读写文件的基本单位,系统是以簇为单位来读写的。簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。簇的概念仅适用于数据区。数据存储在硬盘的时候都以簇为单位。

为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。即文件占用磁盘空间时,基本单位不是字节而是簇。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。这就是为什么我们创建一个很小的文件时,如是一个字节,则它在磁盘上并不是只占一个字节的空间,而是占有整个一簇。

一个簇的大小对于软盘来说是固定的,正好等于一个扇区(512字节);对于硬盘来说则是依硬盘的分区大小和类型而定,一般来说分区越大,则这个分区的簇也越大。 簇越小,磁盘存储效率越高。

在FAT16文件系统中,每个簇都是由唯一的索引号——一个16位二进制数来标识。因为16位二进制数最大为65536(2的16次方),所以FAT分区所拥有的簇的数量不可能超过65536个(在FAT16中,每个分区最多有65525个簇——簇是磁盘空间的配置单位——)。簇大小在Win9x下默认值为32KB。簇的数量和大小的限制,就是FAT分区在Win9x下为什么不能超过2GB的原因。 FAT16在Windows 2000/XP/2003系统下可实现的最大格式化容量为4GB(可实现每簇最大容量64KB)

在FAT32文件系统中使用的簇比FAT16小,默认为4KB。(在FAT32文件系统的情况下,分区大小在2GB~8GB时簇的大小为4KB;分区大小在8GB~16GB时簇的大小为8KB;分区大小在16GB~32GB时,簇的大小则达到了16KB。)

对于Windows NT/2000/XP特有的NTFS文件系统来说,虽然也是采用簇方式来存储数据,但它却和FAT16/FAT32有着明显的不同,当分区的大小在2GB以下时,簇的大小都比相应的FAT32簇小;当分区的大小在2GB以上时(2GB~2TB),簇的大小一律维持在4KB。由于簇容量小,所以无论存储何种类型的文件都不会浪费太多的硬盘空间,这也使得整个硬盘的空间利用率得到了极大的提高。

再另外,  

  网络的字节顺序是和Intel系列不同的,  

  比如   0x12345678   在Intel机器里为:  

  0x78   0x56   0x34   0x12,  

  在网络传输中为:  

  0x12   0x34   0x56   0x78

一般用大写B表示Byte,小写b表示bit。于是有1B=8b,b即bit,音译“比特”,位的意思,即二进制的一位数0或1。二进制数是计算机内部使用的基本表达语言,所以位(bit)是计算机中最小的数据单位。

计算机表示数据的部件主要是存储设备,而存储数据的具体单位是存储单元;
(1)"位"(Bit):是计算机中最小的信息单位。一"位"只能表示0和1中的一个,即一个二进制位,或存储一个二进制数位的单位。
(2)"字节"(Byte):是由相连8个位组成的信息存储单位。
字节是目前计算机最基本的存储单位;也是计算机存储设备容量最基本的计量单位。一个字节通常可以存储一个字符(如字母、数字等)。只有字节才有地址的概念。对一种计算机的存储设备以字节为单位赋予的地址称为字节编址;也是目前计算机最基本的存储单元编址。

因此,计算机内存储器每个存储单元可以存放1个字节(8位二进制数)。

比如你用宽带上网,1M2M10M100M都是用bit来作为单位的,即Mb(全称为Mbps),这是电信部门衡量网络带宽的单位,意思是兆比特位每秒,实际上以上的速度换算到B要除上8。举个简单例子,平时宽带上网的2M就是指2Mbps,在这个单位中,bps是bits per second的缩写,翻译成中文就是比特位每秒,也就是表示一秒钟传输多少位数(二进制)的意思。为什么这里是bits而不是bit了呢?这是英文与中文的区别,复数的表示法。下载时好多人抱怨速度慢,才200KB/S。其实已经不错了,2Mbits/S的带宽能够传送的理论最大速率也就是2000/8=250KB/S了,即最快250KB/秒。bit是网络数据流量单位,一般用于网络速度的描述和各种通信速度中。网络传输中还有比特流的说法。

我们知道,计算机内部用二进制来表示数据,主要是因为实现起来容易、可靠。二进制中使用的0和1两个数,可以方便地实现逻辑运算。计算机内部电路只有两种状态:0与1(0与1,代表逻辑上的“假”与“真”,物理上的电流“关”与“通”,电平“低”与“高”等),内部数据只能采用二进制表示,外部输入的其它进制数需通过编译器转化为二进制数。

进位制

二进制

八进制

十进制

十六进制

规则

21

81

101

161

基数

2

8

10

16

数符

0     1

0  1  2  3

4  5  6  7

0 1 2  3  4

5 6 7  8  9

0  1  2  3  4

5  6  7  8  9

A  B C D E F

位权

2的一次方

8的一次方

10的一次方

16的一次方

形式表示

B

Q

D

H

 

那么进制之间的相互转换又是如何的呢?

二进制转换成十进制一般用2的权位展开法,  十进制转换成二进制一般用除2取余法,其他类同。

 以十进制为基本进制:

(1)其它进制转化为十进制,按位权

    乘以基数的N-1次方;

(2) 十进制转化为其它进制,

     整数部分除基数取余,

     小数部分乘基数取整。

 

二进制数和十进制数之间的转换

二进制数转换为十进制数

􀂉例:1011100.10111B = 26 + 24 + 23 + 22 + 2-1 + 2-3 + 2-4 + 2-5

= 92.71875D

十进制数转换为二进制数

􀂉除法

例如:N = 117.8125D

117D: 117/2 = 58/2 = 29/2 = 14/2 = 7/2 = 3/2 = 1/2 = 0

余数    1         0         1          0       1        1       1

<-----------------------------------------------

0.8125D: 0.8125 × 2 = 0.625 × 2 = 0.25 × 2 = 0.5 × 2 = 1

                                             1                 1             0        1

---------------------------------->

结果:N=117.8125D=1110101.1101B

 
(19)10=(10011)2
(27)10=(1B)16
(10011)2 = 16+2+1=19
A. 二进制十六进制
(101111) 2=(0010  1111) 2
               =(  2       F   ) 16
关键点(技巧):因为2的4次方等于16,所以 4位二进制数等于1位十六进制数
 
 B. 八进制十六进制

:   ( 7 3 )  8 =(111  011) 2

                       =( 00 11  1011) 2
                           =(    3        B   ) 16
 关键点(技巧): 因为2的3次方等于8,所以3位二进制数等于1位八进制数,而4位二进制数等于1位十六进制数。我们以二进制数为中介,先将要转换的进制数化为二进制数,再转换成目的进制数。或者以十进制为中介,先转为十进制,再转为十六进制。
 

 

归纳:
(1)其它进制转化为十进制&二进制转化为其他进制
.二进制→十进制
        (按位权乘2N-1次方)
.八进制→十进制
        (按位权乘8N-1次方)
.十六进制→十进制
        (按位权乘16N-1次方)
.二进制→十六进制
        (每四位二进制数表示
         一位十六进制数)
.二进制→八进制
        (每三位二进制数表示
         一位八进制数)
 
(2) 十进制转化为其它进制&其他进制转化为二进制
 .十进制→二进制
        (整数部分除2取余,
         小数部分乘2取整)
.十进制→八进制
        (整数部分除8取余,
         小数部分乘8取整)
.十进制→十六进制
        (整数部分除16取余,
         小数部分乘16取整)
.十六进制→二进制
        (每一位十六进制数表示
         四位二进制数)
.八进制→二进制
        (每一位八进制数表示
         三位二进制数)
 
最后总结一下:

一个字节是8个二进制位。即1B=8bit。B,就是Byte,字节的意思,是计算机存储基本容量单位。bit就是比特,位的意思,指二进制中的一位0或1,计算机内部最小的数据单位,计算机依靠它来识别处理信息。一个字节可以存放一个ASCLL码,两个字节可存放一个汉字国标码,字节是用来表示存储空间大小的最基本单位而字在计算机中是作为一个整体被存取、传送和处理的二进制字串,它包括的二进制位数就是通常所说的“字长”。32位处理器、64位处理器就是指CPU能直接处理的字长,即二进制位数,能处理的字长越长,性能越高。字符不是存储单位。字符是人们使用的记号,抽象意义上的一种符号。英文、数字、英文的标点各占1字节,汉字、中文的标点各占2字节。一个汉字占两个字节,是在没有任何修饰控制下的占用空间,如果改变默认字体、字号等,则占用空间也会增大。字符有全角半角,全角占用两个字节,半角占用一个~~~
另外,要注意的是内存可以用Byte(字节)做单位,也可以用bit()做单位,两者一音之差,容量差8(1 Byte = 8 bit)。要注意识别。

再强调一下几个概念:

 1.计算机存储(数据)的最小单位称之为位(bit),音译比特,用“b”表示,它是二进制数的长度单位,比如10011001就是8位二进制数;计算机存储基本容量单位(存储空间的基本计量单位)是字节(Byte),音译拜特,用“B”表示。1字节在计算机里存储为一个8位进制数,这是固定的。

2.“字”由若干个字节构成,字的位数叫做字长,字长就是说字所对应的二进制数的长度。不同的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。

前期的DOS就是8位的,后期的DOS是16位的,Win9X是基于DOS的,所以也是16位的,NT核心的Windows是32位的,现在也有了64位的XP/2003,CPU也有了64位的,这个操作系统和CPU所说的位就是bit的意思,即二进制数的长度。

字节是固定由8位二进制构成,64位系统就代表了64位的二进制代表一个字,换算成字节就是64/8=8,即是说由8字节构成一个字,32位系统就是32/8=4,4个字节代表一个字。

有兴趣的朋友可以看看本博另一篇文章《互联网信息总重量比最小一粒沙子还轻》

  评论这张
 
阅读(7165)| 评论(2)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018