分享

为什么一个字节等于8个比特

 萦飞 2018-07-02

数据上1B=8b,我知道具体,但为什么要这样设计?全球通用吗(即全球各地都是这样吗)?

 

热心网友

昨天看书,不经意间也有了同样的疑问,为什么规定 1 Byte = 8 bits,不是其他数量。
查阅了相关资料,中文的资料几乎没有关于这个问题的讨论,wiki上面关于byte的解释也不是很详细,在quora上也有类似的问题。
最后找到这篇文章 : WHY IS A BYTE 8 BITS? OR IS IT?
http://www./BYTE.HTM

作者是"ASCII码之父" Bob Bemer,这个解释还是相当权威靠谱的。
简单的说,就是编码发展的过程。从最早的打孔I/O到后来的键盘显示器,我们处理的数据也在不断发展:数字、控制符、符号、英文字符、多国语言字符。
处理整数运算我们只需要编码0-9十个数字和符号,4 bits就应该够了;后来我们要处理英文字符,需要给52个大小写字母编码;之后有了高级语言,要为高级语言的符号编码。表示每个单元的bit也在不断增加,一直增加到8bits,诞生了ASCII编码的标准,已经能涵盖日常使用的所有编码了,所以给每个单元起了个名字叫“Byte”
1 Byte = 8 bits
其实是一个历史习惯问题,在当今的国际化unicode编码环境下1 byte已经很难成为表示一个字符的单元。在上文中Bob Bemer的建议是不要使用"byte"这个名称表示8 bits,而是用"octet"(八位组),因为有些设备的基本字符单元不是8bits。在通信与网络的资料中,经常能看到“octet”的使用。
BTW
:在很多入门书中,仍然存在“1个英文字母占用1字节,一个汉字占用2字节不负责任的说法,丝毫不提编码条件(编码字符集&字符编码方案),坑人无数。

 

另外我查阅了

ASCII码表里的字符总共有多少个?

ASCII码占用一个字节,可以有0255256个取值。前128个为常用的字符如运算符,字母 ,数字等 键盘上可以显示的后 128个为 特殊字符是键盘上找不到的字符。

 

终上所述,2^8=256,一个字节等于8个比特是为了字符的取值。

另外又查阅了一下字符编码方案

ASCII:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制。最小值0,最大值255。如一个ASCII码就是一个字节。

UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多