字节的奥秘

在数码产品中,最常见的名词就是“字节”了。不管是U盘容量、手机存储空间,还是网络带宽,下载速度,都会涉及所谓“字节”这个单位。但到底“字节”是一个什么东西呢?本章就为你说明这个问题

1.1阴阳八卦和十个手指头

1.1.1假如人类是四趾动物

数码产品与数学的关联非常深,而数学又是由数字组成的学问,所以我们现在数字开始说。在世界上,所有民族的数字“单位”几乎都是一样的,就是分为十个数字:一、二、三、四、五、六、七、八、九、十。许多人平时可能都不会去考虑,为何我们的数字会是十个,而不是七个,或者八个呢?事实上,如果人类和米老鼠一样是四个手指;或者人类是从鸟类进化来的“鸟人”,拥有四个指头,那么这个世界上的数字也许就只有从一到八了。因为原始人类社会中,由于每个人有十个手指,因此在使用数字的时候,最小的一组数字单位就正好用一个人的全部手指来充当。这样作为最小的一组数字,造成了数字的进位就以十为基础。所以十进制,仅仅是和使用数字的人,习惯使用的算术工具有关系而已;而数字本身,是可以用任意的“进制”的。

[鸟类的脚趾只有四个]

1.1.2洞悉本质的老子

数字是可以用“任意进制”的,如果我们要“发明”一种:“数字”最少的计算方法,可以最少只用几个数字了?答案是“二”。对于计算机来说,它们天生都是“两趾”的:电压分高、低;磁极分南、北;电流有通、断,所以二进制是现在计算机的基础进制。也就是说,只要有0和1两个数字,就可以表达世界上一切数目。这个观点乍一听有点不可思议:既然我们可以只用两个数字就可以了,为何还要发明出另外八个数字呢?其实中国人的先哲中,有一位早就说明这个道理,他就是老子,他写道:道生一、一生二,二生三,三生万物。意思大概是阴阳两种事物,可以组合表达出万事万物。所以在八卦的图形上,阴阳表达为横线,中间有断开的是阴,没断开的是阳。

八卦则由三根这种代表阴阳的横线组成,不同的八种三根横线的组合,构成了八个不同的含义。这八个卦象,人们认为可以表达万事万物。在二进制来说,我们可以看成阴是0,阳是1,这样3位二进制数,刚好能容纳0-7一共8个数字。对于这样的二进制数,每条横线是一个数字单位,成为“位”,英文是“bit”。比如表达十进制里面的7,需要用三个二进制数表达:1,1,1(阳阳阳),这里就是用了三个“位”的二进制数。如果你要表达更大的数目,就需要用更多的“位”。我们现在数码科技中使用的最小信息单位,也就是“位”。而“字节”(英文叫“byte”),则是由八个“位”组合成的另外一个单位。

[三位二进制数表示的8个序列的八卦]

1.1.3最小信号盒子

在第一章中,我们讲过,世界上所有的信息都能用数字来表达。我们的数字又是用最小数字的方法——二进制来构成的,所以当需要说明一串用来表达信息的数字,它们有多大的时候,我们可以说这串数字有多少个“位”。如“1000100111111110”这串二进制数(可能表达的是两个英文字母,也可能是小于65535的一个正整数),我们通过数一下他的长度,就可以说它有16“位”的长度。但是16位这么长的数,才表达两个字符或一个六万五以内整数,显得不太好理解,所以我们一般较少直接用“位”这个最小的数码单位,而是用另外一个更容易理解的单位——“字节”。

由于每八个“位”可表达一个拉丁文的字符(拉丁字母表才几十个字,汉字就不行了),所以我们就喜欢把八个“位”看成一个单位“字节”,说一段数字有多少个字节,就表示这段数字能表达多少个“字”(英文字)。尽管数字可表达的内容不止是文字,但是“字节”还是因为人们觉得“形象”而成为数字信息的单位。我们可以把每个“字节”看成一个小小的数字“盒子”,里面可以放八个“0”、“1”数字,计算机就可以这样以一个个的“数字盒子”来处理信息了。假如有一个盒子里面没装满,一般就把空位(高位)填上0。

现在我们用的电脑、手机,几乎都是以字节为单位处理信息的,所以购买电脑、手机产品时、标签上的标记的单位,如16Gbytes, 256G bytes都用bytes字节做单位。但是通信带宽,还是习惯用bit“位”位单位,如100Mbit/S(网卡速度)、12Mbit/S(ADSL带宽)。有时候我们会奇怪:明明写着带宽是12M/秒,为什么下载速度只有1M/秒了?其实是因为两个计算的单位不一样,带宽的标记单位是“位”,12Mbit/秒其实等于1.5Mbyte/秒,所以下载速度最多是一点几M“字节”每秒。电脑上显示的基本都是byte字节为单位的嘛。早期的电视游戏卡带,号称16M大容量的游戏,却可以拷贝到2张3.5寸软盘(1.44M容量)中,也是这个道理,因为卡带的容量单位是“位”,而软盘的容量单位是“字节”,16Mbit仅仅只有2Mbyte而已,2张软盘绰绰有余了。

1.2 KMGT

1.2.1容量和速度的单位

在各种各样的数码产品中,一般都会有两个指标:一是速度,一是容量。以U盘为例,会写“256M”,这个指的是容量,意思是它可以存放256M个字节的这么长数字。其中M是一个数学单位,是英文的“百万”million的缩写,256M就是256x1,000,000个字节的数字。除了M,我们还常见到K,G,T等缩写,K是kilo,也就是“千”的意思,1000K=1M,G是1000个M,T是1000个G。现在好多硬盘的容量都有几个T,对比最早的40M容量的硬盘,大了几百万倍。说回U盘,我们常会以容量来表示他的特性,但是其实还有一个速度的指标。在U盘上我们细心点看标签,有些会写上“USB2.0”或“USB3.0”,这个就是表示速度的指标。

USB2.0标准,表示电脑可以以每秒30M个字节的速度,与U盘传输数据。标准越高,传输的速度越快,我们需要等待往U盘读写文件的哦时间就越短。硬盘、内存和U盘类似,都有一个容量的指标和速度的指标。另外一些硬件如网卡,指标主要就是速度,如100Mbit/S,意思就是网卡每秒能传输10x1,000,000个位(不是字节)。有趣的是,显示卡的主要指标往往是容量,因为卡上的显示内存越大,显示的速度就越快,现在带有几个G bytes的显卡很常见。最后说说CPU,一般我们认为CPU只有速度指标,如33MHz,就是每秒运算33x1,000,000次。其实CPU也有容量,我们现在有32位CPU,还有64位CPU,早期的CPU还有8位,16位的,这个“位”数就是指,每次预算能处理多长容量的数字。8位二进制最大就是0~255,如果程序要计算大于255的整数,就需要多次运算。早期16位游戏机里,常常用65535作为一个数的最大值,比如杀死最终BOSS获得经验值就是65535点,这样设计可以最好的利用其16位CPU;但是现在大部分32位、64位CPU的电脑里,计算65535还是655350都只需要一个计算周期,就没必要把数字限制到65535以内了。(当然以前的游戏缩小数字范围还有考虑减少卡带容量的因素)除了CPU的“位”数,CPU往往还带有二级缓存、三级缓存,这些缓存就是存放数据的临时空间,越大越有利于速度提高,所以CPU指标上也有这些缓存的容量指标。

1.2.2 1M有多大

刚刚我们提到了K\M\G\T这些缩写,但是这些字眼并不能给我们直观的认识——这些数据说代表的规模。我们可以先以文字来看,每1M字节的容量能存放1百万字的英文文章,这里的“字”是字母而非单词。对于中文来说,一般需要两个字节来表达一个汉字,所以1M Byte能存放五十万字的汉语文章。《水浒传》大概五十六万字,在电脑里,一张薄薄的软盘就可以放下了。如果你用光盘(CD-ROM),一般的光盘都有700M Bytes的容量,可以存放50万x700,大概三亿五千万字的文章,而《永乐大典》的字数也只有3.7亿字而已。《四库全书》号称世界上字数最多的书,大概有10亿个汉字,4张普通光盘,或者一张DVD基本就能装下。你看,1M是不是很“大”?

但是,如果你用1M空间存放图片,就会发现1M太小了,因为一张彩色照片,假如是1024X768个点组成(这个分辨率是老式显示器的),而每个点按256种颜色来绘制(256色几乎是卡通画的色彩才能这么少),那么一张照片就会占用1024x768x256个字节,大概2.4M,1M空间连一张质量很差的照片都放不下。所以,数据容量的大小不是绝对的,而是看说存放的内容来顶顶哦。事实上,1M空间是可以存放更多的内容的,办法就是针对存放的数据,使用不同的“数字魔法”——压缩算法,从而使同样的1M空间,可以存放五百万字的文章,或者十张彩色图片,又或者1分钟的音乐。节省空间的压缩,要付出CPU计算时间为代价,这就是计算机世界的时空交换原则:你要节省空间,就要付出时间,反之亦然。程序中的所有优化,在相同硬件的情况下,一般都是按使用需求灵活平衡时间和空间而得到的结果。下一章,我们就会讨论可以让数字信息进行时空变化的方法——各种有用的算法。

[3.5寸软盘]

[50万字的书]

[1024x768的图片2M容量]

感谢大家的阅读,如觉得此文对你有那么一丁点的作用,麻烦动动手指转发或分享至朋友圈。如有不同意见,欢迎后台留言探讨。

原文发布于微信公众号 - 韩大(handa1740168)

原文发表时间:2016-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HansBug's Lab

1647: [Usaco2007 Open]Fliptile 翻格子游戏

1647: [Usaco2007 Open]Fliptile 翻格子游戏 Time Limit: 5 Sec  Memory Limit: 64 MB Subm...

2746
来自专栏从流域到海域

《笨办法学Python》 第31课手记

《笨办法学Python》 第31课手记 本节课是一小段类似《龙与地下城》的游戏的代码,是if语句嵌套的深入,即嵌套的if语句中又出现嵌套的if语句。理论上可以嵌...

1747
来自专栏木子昭的博客

机器学习三剑客之PandasPandas的两大核心数据结构Panda数据读取(以csv为例)数据处理Pandas的分组和聚合(重要)

Pandas是基于Numpy开发出的,专门用于数据分析的开源Python库 Pandas的两大核心数据结构 Series(一维数据) 允许索引重复...

2756
来自专栏HansBug's Lab

1622: [Usaco2008 Open]Word Power 名字的能量

1622: [Usaco2008 Open]Word Power 名字的能量 Time Limit: 5 Sec  Memory Limit: 64 MB Su...

2384
来自专栏数据结构与算法

HDU4352 XHXJ's LIS(LIS 状压)

刚开始的思路是$f[i][j]$表示到第$i$位,LIS长度为$j$的方案。 然而发现根本不能转移,除非知道了之前的状态然后重新dp一遍。。

613
来自专栏ACM算法日常

过山车(匈牙利算法)- HDU 2063

输入数据的第一行是三个整数K , M , N,分别表示可能的组合数目,女生的人数,男生的人数。0<K<=1000 1<=N 和M<=500.接下来的K行,每行有...

891
来自专栏数据结构与算法

P1991 无线通讯网

题目描述 国防部计划用无线网络连接若干个边防哨所。2 种不同的通讯技术用来搭建无线网络; 每个边防哨所都要配备无线电收发器;有一些哨所还可以增配卫星电话。 任意...

2686
来自专栏马洪彪

C#仪器数据文件解析-XPS文件

XPS为微软推出的类似于Adobe PDF的一种文件格式,个人认为XPS很好,但毕竟PDF已经被大家所熟知,因此XPS的使用很少,也少有仪器数据输出为该格式。 ...

3324
来自专栏技术随笔

LIDC-IDRI肺结节公开数据集Dicom和XML标注详解数据来源解析结果数据分析

4468
来自专栏SeanCheney的专栏

《利用Python进行数据分析·第2版》第14章 数据分析案例14.1 来自Bitly的USA.gov数据14.2 MovieLens 1M数据集14.3 1880-2010年间全美婴儿姓名14.4

本书正文的最后一章,我们来看一些真实世界的数据集。对于每个数据集,我们会用之前介绍的方法,从原始数据中提取有意义的内容。展示的方法适用于其它数据集,也包括你的。...

2745

扫码关注云+社区