论文部分内容阅读
提要:只认识0和1的计算机,为何能使用缤纷的色彩描绘大千世界?
小时候看到书里说计算机不过是一台装满了0和1的机器,总是不以为然:怎么可能,你看屏幕上那些五彩缤纷的颜色。长大后,当我成为了一名计算机战士,才深深地感受到,为什么计算机屏幕美如画,正是那0101染红了它。那么,装满了0和1的计算机是怎么显示出各种颜色的呢?
在广大计算机的心目中,宇宙中的一切都是可以编号的,这是宇宙存在的基础。要让计算机能够表示颜色,首先就要给颜色编号。如果每种颜色用一位数字表 示,比如0表示黑,1表示白,这样就能表示2种颜色,可以画个太极图。如果每种颜色用两位数字表示,00=红,01=黄,10=蓝,11=绿,这样可以表示4种颜色,可以画张不错的儿童画。如果用更多的位,那就能表示更多的颜色,因此,我们就用这个位数来描述颜色的丰富程度,比如说,8位色是256种不同的颜色,16位是65536种,而24位是16,777,216种。
这么多颜色编码,就不能像4色8色那样乱点鸳鸯谱了,什么颜色对应几号,要有一定的规则才行。否则的话,编码倒是没问题,但在显示的时候就不方便了。比如说,我们在画画的时候,只要有红黄蓝三原色,就能调出各种颜色来。现在请你调出“第100207号颜色”,如果这个号码是随便分配的,你就不知道怎样调,但如果这个号码恰好表示“10份红色+2份黄色+7份蓝色”(10,02,07),那你马上就可以调出来。广大计算机纷纷表示,它们也需要这种可以直接理解的编码方式,所以我们就参照上面的例子为颜色编码。对于计算机屏幕来说,显示颜色靠的是发光,而光的三基色是红、蓝、绿,所以要表示任何一种颜色,只要知道红蓝绿三种光的强度分别是多少。
我们把一种光的强度分成256种等级,0表示不发光,255表示最高强度,那么用三个0~255的数字就能分别表示红、蓝、绿三色光的强度。比如,(0,0,0)表示红蓝绿都不发光,对应为黑色,而(255,255,255)就对应着白色,(100,100,100)是灰色,(255,0,0)是纯红色,等等。0~255是十进制,我们把它转换成二进制,黑色就是000000000000000000000000,纯蓝色就是 000000001111111100000000。
由于这些数字太长,计算机爽了,我们很不爽,于是有关部门决定在书写时使用16进制,黑色记作 000000,纯蓝色记作00FF00,这就是24位颜色的编码方法了。由于是用红(Red)、绿(Green)、蓝(Blue)三种光的强度来表示颜色,所以这种编码称为RGB码。
现在颜色们有了自己的号码,计算机可以通过0和1来表示它们,下一步就是要根据号码来控制三色光的强度,把不同的颜色显示出来,这时,显示器立功了。1888年,奥地利植物学家F·Renitzer发现了液晶这种物质有一个特殊的物理特性:液晶能使通过其中的光线发生扭转,而外电场的强度能够决定扭转的幅度。作为一位植物学家,Renitzer却因为发现了液晶而名垂于世。
对于一般的光线来说,扭转并不能改变强度,但是对于即将夹在两层彼此垂直的偏振片之间的光线来说,情况就不同了。
液晶显示器里面有一个发射白光的灯管,灯管发出的光线首先会通过垂直偏振片,转换成垂直方向的偏振光。不难想象,如果这束垂直的偏振光不经过扭转,就会被前面的水平偏振片完全挡住,如果被扭转90度,就会完全通过水平偏振片。如果扭转30度、45度、60度呢?像这样的,我们控制液晶扭转光线的程度,也就控制了射出光线的强度。射出的光线再经过滤色片,就被转换成了特定颜色、特定强度的光。而屏幕上的每个像素分成三个单元,这三个单元的滤色片颜色不同(分别是什么色,你猜),每个单元独立加上不同强度的电场,调出不同强度的三基色,对应的像素就表现出五彩缤纷的颜色了。
现在我们来实战一下,让一个像素显示桔色。桔色=251份红光+134份绿光+29份蓝光,RGB码就是FB861D,对应的二进制形式是 111110111000011000011101。然后,主机把这串数字告诉显示器,显示器就给这个像素的三个单元的液晶分别加上对应强度的电场,使它们能把光线分别拧到相应的方向。这时,灯管发出的白光通过垂直偏振片被转换成垂直偏振光,然后穿过三个单元的液晶分子,被拧成了不同方向的三股斜的偏振光,再通过水平偏振片,就能射出三股强度不同(分别是251,134,29)的白光来。而站在前方等待这三股白光的,分别是红、绿、蓝三个滤色片,于是它们又被转换成了251份红光+134份绿光+29份蓝光,混合在一起,人的眼睛就看到了桔色。
计算机屏幕上五彩缤纷的颜色,都是像这样由0和1而表现出来的。简单的两个数字,在计算机科学的舞台上略施小技,就能给你点颜色看看。当你陶醉于屏幕上一张张美仑美奂的图片时,不妨感激一下这两个数字:回眸01之美,足以令六宫粉黛失色。(科学松鼠会http://songshuhui.net/供稿)
小时候看到书里说计算机不过是一台装满了0和1的机器,总是不以为然:怎么可能,你看屏幕上那些五彩缤纷的颜色。长大后,当我成为了一名计算机战士,才深深地感受到,为什么计算机屏幕美如画,正是那0101染红了它。那么,装满了0和1的计算机是怎么显示出各种颜色的呢?
在广大计算机的心目中,宇宙中的一切都是可以编号的,这是宇宙存在的基础。要让计算机能够表示颜色,首先就要给颜色编号。如果每种颜色用一位数字表 示,比如0表示黑,1表示白,这样就能表示2种颜色,可以画个太极图。如果每种颜色用两位数字表示,00=红,01=黄,10=蓝,11=绿,这样可以表示4种颜色,可以画张不错的儿童画。如果用更多的位,那就能表示更多的颜色,因此,我们就用这个位数来描述颜色的丰富程度,比如说,8位色是256种不同的颜色,16位是65536种,而24位是16,777,216种。
这么多颜色编码,就不能像4色8色那样乱点鸳鸯谱了,什么颜色对应几号,要有一定的规则才行。否则的话,编码倒是没问题,但在显示的时候就不方便了。比如说,我们在画画的时候,只要有红黄蓝三原色,就能调出各种颜色来。现在请你调出“第100207号颜色”,如果这个号码是随便分配的,你就不知道怎样调,但如果这个号码恰好表示“10份红色+2份黄色+7份蓝色”(10,02,07),那你马上就可以调出来。广大计算机纷纷表示,它们也需要这种可以直接理解的编码方式,所以我们就参照上面的例子为颜色编码。对于计算机屏幕来说,显示颜色靠的是发光,而光的三基色是红、蓝、绿,所以要表示任何一种颜色,只要知道红蓝绿三种光的强度分别是多少。
我们把一种光的强度分成256种等级,0表示不发光,255表示最高强度,那么用三个0~255的数字就能分别表示红、蓝、绿三色光的强度。比如,(0,0,0)表示红蓝绿都不发光,对应为黑色,而(255,255,255)就对应着白色,(100,100,100)是灰色,(255,0,0)是纯红色,等等。0~255是十进制,我们把它转换成二进制,黑色就是000000000000000000000000,纯蓝色就是 000000001111111100000000。
由于这些数字太长,计算机爽了,我们很不爽,于是有关部门决定在书写时使用16进制,黑色记作 000000,纯蓝色记作00FF00,这就是24位颜色的编码方法了。由于是用红(Red)、绿(Green)、蓝(Blue)三种光的强度来表示颜色,所以这种编码称为RGB码。
现在颜色们有了自己的号码,计算机可以通过0和1来表示它们,下一步就是要根据号码来控制三色光的强度,把不同的颜色显示出来,这时,显示器立功了。1888年,奥地利植物学家F·Renitzer发现了液晶这种物质有一个特殊的物理特性:液晶能使通过其中的光线发生扭转,而外电场的强度能够决定扭转的幅度。作为一位植物学家,Renitzer却因为发现了液晶而名垂于世。
对于一般的光线来说,扭转并不能改变强度,但是对于即将夹在两层彼此垂直的偏振片之间的光线来说,情况就不同了。
液晶显示器里面有一个发射白光的灯管,灯管发出的光线首先会通过垂直偏振片,转换成垂直方向的偏振光。不难想象,如果这束垂直的偏振光不经过扭转,就会被前面的水平偏振片完全挡住,如果被扭转90度,就会完全通过水平偏振片。如果扭转30度、45度、60度呢?像这样的,我们控制液晶扭转光线的程度,也就控制了射出光线的强度。射出的光线再经过滤色片,就被转换成了特定颜色、特定强度的光。而屏幕上的每个像素分成三个单元,这三个单元的滤色片颜色不同(分别是什么色,你猜),每个单元独立加上不同强度的电场,调出不同强度的三基色,对应的像素就表现出五彩缤纷的颜色了。
现在我们来实战一下,让一个像素显示桔色。桔色=251份红光+134份绿光+29份蓝光,RGB码就是FB861D,对应的二进制形式是 111110111000011000011101。然后,主机把这串数字告诉显示器,显示器就给这个像素的三个单元的液晶分别加上对应强度的电场,使它们能把光线分别拧到相应的方向。这时,灯管发出的白光通过垂直偏振片被转换成垂直偏振光,然后穿过三个单元的液晶分子,被拧成了不同方向的三股斜的偏振光,再通过水平偏振片,就能射出三股强度不同(分别是251,134,29)的白光来。而站在前方等待这三股白光的,分别是红、绿、蓝三个滤色片,于是它们又被转换成了251份红光+134份绿光+29份蓝光,混合在一起,人的眼睛就看到了桔色。
计算机屏幕上五彩缤纷的颜色,都是像这样由0和1而表现出来的。简单的两个数字,在计算机科学的舞台上略施小技,就能给你点颜色看看。当你陶醉于屏幕上一张张美仑美奂的图片时,不妨感激一下这两个数字:回眸01之美,足以令六宫粉黛失色。(科学松鼠会http://songshuhui.net/供稿)