EDA365电子论坛网

标题: 字(Word)字节(byte)位(bit)的关系 [打印本页]

作者: zd305    时间: 2016-9-10 17:56
标题: 字(Word)字节(byte)位(bit)的关系
本文转至:http://www.dongeasy.com/software-development/embedded-system/2498.html
4 [& d+ ~2 H6 k& ^- u1 y- r' z2 v6 V/ k

bit是binary digit的缩写。最早是科劳德•仙能(Claude Shannon)用在他1948年不朽之篇《通讯的数学理论》。bit可以是任何明确的二元物理状态之一:男女,昼夜,死活,高低,通断,以及抽象的二元认知状态之一:阴阳,真假,0/1。

byte这个单词是维纳•巴霍(Werner_Buchholz)在1956年设计IBM Stretch计算机时杜撰的,是特意改拼的bite,以避免误拼为bit。

byte是用来表示一个字母的单位。最早是4个bit,代表一个BCD(10进制数的二进制编码),后来也有6个bit的,用在美军的可显示字符表。再后来扩展为7个bit,并美国标准化为ASCII。最后才自然统一为现状的8个bit,为的是凑出2的3次方。

word是一种CPU的自然数据单位,通常是其指令和总线宽度。从早期的8-bit, 16bit,到现在的32bit和64bit,反映的是CPU的单位处理能力的增强。

+ y  t6 H* W6 ^# }, V" U4 B6 ?

位(Bit):“位”或“比特”,是计算机运算的基础;

字节(Byte):“字节”是通过网络传输信息(或在硬盘内存中存储信息)的单位。

$ m  O2 U) R$ m, V2 A

字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制


2 {7 Q/ t  T" U& A/ }

ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

* }  N# M7 X8 s0 Z

符号:英文标点占一个字节,中文标点占两个字节。举例:英文句号“.”占1个字节的大小,中文句号“。”占2个字节的大小


" P* v  O3 w. c, c% b0 \: ^

一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,如一个ASCII码就是一个字节.

字(WORD),2个字节组成一个字。

双字(DWORD),4个字节组成一个双字。

如ANSI标准规定一个字符为1个字节或多个字节,UNICODE为宽字节字符串或者UNICODE字符串,规定,每个字符都占两个字节。如"中国123",ANSI编码为5字节,在UNICODE中为10字节。

Unicode和ANSI的区别就相当于输入法内的“全角”和“半角”的区别。


" n" {. N% V* g. y3 i/ ?: U

由于不同 ANSI 编码所规定的标准是不相同的(字符集不同),因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种字符集则,才能够知道它包含了哪些“字符”。而对于 UNICODE 字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。Unicode 有着统一的标准,它定义了世界上绝大多数的字符的编码,使得拉丁文、数字、简体中文、繁体中文、日文都能一同一种编码方式保存。

Bit 和Byte的区别:

比如:USB2.0标准接口传输速率480Mbps,就有人误解为480兆/秒,同样网络带宽2MB,就易误解为2兆/秒。实际上,480Mbps应为480兆比特/秒或480兆位/秒,它等于“60兆字节/秒”;同样,2MB,就应该是256兆字节/秒。

Bit和Byte同译为"比特",都是数据量度单位,bit=“比特”或“位”。
2 k1 z! E, t9 h# OByte=字节即1byte=8bits,两者换算是1:8的关系。

Mbps=mega bits per second(兆位/秒)是速率单位,所以2M带宽应该是2兆位/秒,即2MBps。

MB=mega bytes(兆比、兆字节)是量单位,1MB/S(兆字节/秒)=8MBPS(兆位/秒)。

通常所说的硬盘容量是40GB、80GB、100GB,这里的B指是的Byte也就是“字节”。

1 KB = 1024 bytes
( S3 B5 ^$ }6 @. S- j+ r1 MB = 1024 KB = 1024*1024 bytes
) S. E+ D+ T/ M5 D; ^1 GB = 1024 MB = 1024*1024*1024 bytes

比如以前所谓的56KB的MODEM换算过来56KBps除以8也就是7Kbyte,所以真正从网上下载文件存在硬盘上的速度也就是每秒7Kbyte;也就是说与传输速度有关的B一般指的是Bit;与容量有关的B一般指的是Byte。

Bit,Byte,WORD,DWORD本质:

在Visual C++ 6.0中,BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下:

typedef unsigned char       BYTE;
$ V: r, a# ]7 m% i: vtypedef unsigned short      WORD;# z0 ?# r& B6 b% f  Q, C7 E  o  Y
typedef unsigned long       DWORD;3 g* w) I  I+ Z
也就是说BYTE是无符号的char型(char型本质上也是一种1个字节的整型),WORD是无符号short型,DWORD是无符号long型。

而在Visual C++ 6.0中,char型长度为1字节,short型长度为2字节,int和long型长度都为4字节,因此可以认为BYTE与WORD,DWORD定义的变量分别获得了1字节,2字节,4字节内存,正与BYTE与WORD,DWORD的字面意义相符。

即:BYTE=unsigned char(完全等同)- b+ d2 q) J' J& ]  z! C6 F3 k
WORD=unsigned short(完全等同)
$ F' D8 U' r( p+ u" o" K1 QDWORD=unsigned long(完全等同)

' b; e2 K* U/ H# _3 c

作者: wzs6668    时间: 2016-9-12 11:05
支持一下,很不错哦!
! E5 d* U9 m* T6 ?$ E) J$ y




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2