你的数字生活:如何转变为一个个0和1?

你的数字生活:如何转变为一个个0和1?
2020年12月30日 14:07 人工智能读芯术

图源:Google

计算机“说着”二进制——一面由0和1组成的神秘墙,用某种方式缔造了数字生活中所见所及的一切。甚至你正在读的这句话,也是由设备操纵0和1所形成。

我是一个软件工程专业的学生,想在每天交互的精美界面和使之成型的底层机制之间架设一座桥梁。我试图总结出一条如何不碎片化地用0和1分解操作系统、应用程序、游戏等领域中各种元素的方案。

但这回避了一个较为突出的问题:什么是二进制?它由0和1组成,这两个数字究竟如何应对复杂的日常生活呢?答案在于基数,即计数系统用来表示数值的位数。使用数字0-9的传统计数系统叫做十进制,而只用0和1的叫做二进制。

随机取一个数,如423。数字3在个位,数字2在十位,数字4在百位。每增加一个数位就代表着我们把数字的值扩大十倍,此时必须在新的一位上增加一个数字,或者进位,增加原数字的位数。

每个位都是十的幂次方,1、10、100、1000等。同样的体系也适用于二进制,但我们只有两位数字。当用二进制数时,每个位都是二的幂次方。每当数字的值增加2,就会加上一个新的数位或进位。

如图所示,每位都是2的幂次方而不是10的幂次方。1仍然是1,但2记作10(二进制),因为1占了上图2所对应的位置。3记作011(二进制),因为一个1占了上图2所对应的位置,又有一个1占了上图1所对应的位置。当然,4(十进制)记作100(二进制),因为1占了上图4对应的位置。

这儿要强调的是,凭这两个数字,我们有能力应对十进制或其他进制能够完成的复杂计算,只是大众不太熟知其计数的方法。

那么,计算机缘何选择二进制?为何不用十进制或其他进制来表示信息?这问题听起来古怪,但原因在于二进制性质。二进制中数字只能由0或1呈现,也可理解为开或关、真或假。

一个二进制数字或者一个比特,就像一个开关,可开可关,就像电脑CPU中的晶体管一样。现代CPU的晶体管虽然体积小,但数量上却达到了几百万个。这些晶体管可以看作是开关,它们可开可关并对应0或1。这样,当许多位或许多数字出现时(8位构成一个比特!),一开一关便可以表示数字等复杂意义。

0和1,它们是比特并代表了数字(可比0和1大得多),它们是我们设备上硬件的副产品。

我们在设备上所做的一切都可以用数字表示。文本、图像、视频、声音、像素,都能被设备读取为数字。一种英语字符转换成数字的方法是美国信息交换标准码(American Standard Code,亦ASCII)。在这种编码形式中,每个字符对应一个数字,也就能用二进制表示。

但ASCII仅限于英语。所以不同的语言或是表情符号可能会使用Unicode编码。你每次发emoji,或者以其他无数种方法发送文本,实际上都可能是在用一种编码方法(如ASCII或Unicode)传输数字。

以数字表文字的模式同样可用于表示声音。一个音符的音量、音调或持续时间可以用数字表示,尽管这确实过于简化了音频编码的过程,因为音频编码本身就是一个复杂的话题。

但是图像呢?与设备交互时的视觉体验呢?众所周知,大家看到的屏幕是由能展现红、绿、蓝三种颜色的像素组成。混合这三种颜色便构成了显示器的色域。大多数现代显示器使用24位颜色,这并不重要,重要的是它能展示出16777216种颜色。下面是所有这些颜色,屏幕的色域仅是可见光光谱的一个子集。

每个独立像素有红、绿、蓝三个通道,每个通道都有一个表示色阶的值。这样数字就能表示颜色。当然,这里的数字可以用十进制或二进制表示。下面是一些颜色及其RGB编码的小样本,每个颜色有三个值,每个通道有一个值。

正如颜色和图像可用数字表示一样,视频和gif动图也可以,因为它们都有一个帧速率。它们只是一系列图像以快速运动的形式呈现而已。

Instagram的帖子、图片搜索、视频等都可传送,因为在机器代码底层,设备正在计算承载了我们眼前动画像素值的0和1。这一过程由软件控制,而该软件又是由机器代码编译,从而提供如何处理我们输入或请求的所有信息的指令。

归根结底,人们每天所做的自然而然的无数复杂之事,其核心都是由大量只能进行开或关的小开关来完成的。

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部