提要:只認(rèn)識0和1的計(jì)算機(jī),為何能使用繽紛的色彩描繪大千世界?
小時(shí)候看到書里說計(jì)算機(jī)不過是一臺裝滿了0和1的機(jī)器,總是不以為然:怎么可能,你看屏幕上那些五彩繽紛的顏色。長大后,當(dāng)我成為了一名計(jì)算機(jī)戰(zhàn)士,才深深地感受到,為什么計(jì)算機(jī)屏幕美如畫,正是那0101染紅了它。那么,裝滿了0和1的計(jì)算機(jī)是怎么顯示出各種顏色的呢?
在廣大計(jì)算機(jī)的心目中,宇宙中的一切都是可以編號的,這是宇宙存在的基礎(chǔ)。要讓計(jì)算機(jī)能夠表示顏色,首先就要給顏色編號。如果每種顏色用一位數(shù)字表 示,比如0表示黑,1表示白,這樣就能表示2種顏色,可以畫個(gè)太極圖。如果每種顏色用兩位數(shù)字表示,00=紅,01=黃,10=藍(lán),11=綠,這樣可以表示4種顏色,可以畫張不錯(cuò)的兒童畫。如果用更多的位,那就能表示更多的顏色,因此,我們就用這個(gè)位數(shù)來描述顏色的豐富程度,比如說,8位色是256種不同的顏色,16位是65536種,而24位是16,777,216種。
這么多顏色編碼,就不能像4色8色那樣亂點(diǎn)鴛鴦譜了,什么顏色對應(yīng)幾號,要有一定的規(guī)則才行。否則的話,編碼倒是沒問題,但在顯示的時(shí)候就不方便了。比如說,我們在畫畫的時(shí)候,只要有紅黃藍(lán)三原色,就能調(diào)出各種顏色來。現(xiàn)在請你調(diào)出“第100207號顏色”,如果這個(gè)號碼是隨便分配的,你就不知道怎樣調(diào),但如果這個(gè)號碼恰好表示“10份紅色+2份黃色+7份藍(lán)色”(10,02,07),那你馬上就可以調(diào)出來。廣大計(jì)算機(jī)紛紛表示,它們也需要這種可以直接理解的編碼方式,所以我們就參照上面的例子為顏色編碼。對于計(jì)算機(jī)屏幕來說,顯示顏色靠的是發(fā)光,而光的三基色是紅、藍(lán)、綠,所以要表示任何一種顏色,只要知道紅藍(lán)綠三種光的強(qiáng)度分別是多少。
我們把一種光的強(qiáng)度分成256種等級,0表示不發(fā)光,255表示最高強(qiáng)度,那么用三個(gè)0~255的數(shù)字就能分別表示紅、藍(lán)、綠三色光的強(qiáng)度。比如,(0,0,0)表示紅藍(lán)綠都不發(fā)光,對應(yīng)為黑色,而(255,255,255)就對應(yīng)著白色,(100,100,100)是灰色,(255,0,0)是純紅色,等等。0~255是十進(jìn)制,我們把它轉(zhuǎn)換成二進(jìn)制,黑色就是000000000000000000000000,純藍(lán)色就是 000000001111111100000000。
由于這些數(shù)字太長,計(jì)算機(jī)爽了,我們很不爽,于是有關(guān)部門決定在書寫時(shí)使用16進(jìn)制,黑色記作 000000,純藍(lán)色記作00FF00,這就是24位顏色的編碼方法了。由于是用紅(Red)、綠(Green)、藍(lán)(Blue)三種光的強(qiáng)度來表示顏色,所以這種編碼稱為RGB碼。
現(xiàn)在顏色們有了自己的號碼,計(jì)算機(jī)可以通過0和1來表示它們,下一步就是要根據(jù)號碼來控制三色光的強(qiáng)度,把不同的顏色顯示出來,這時(shí),顯示器立功了。1888年,奧地利植物學(xué)家F·Renitzer發(fā)現(xiàn)了液晶這種物質(zhì)有一個(gè)特殊的物理特性:液晶能使通過其中的光線發(fā)生扭轉(zhuǎn),而外電場的強(qiáng)度能夠決定扭轉(zhuǎn)的幅度。作為一位植物學(xué)家,Renitzer卻因?yàn)榘l(fā)現(xiàn)了液晶而名垂于世。
對于一般的光線來說,扭轉(zhuǎn)并不能改變強(qiáng)度,但是對于即將夾在兩層彼此垂直的偏振片之間的光線來說,情況就不同了。
液晶顯示器里面有一個(gè)發(fā)射白光的燈管,燈管發(fā)出的光線首先會通過垂直偏振片,轉(zhuǎn)換成垂直方向的偏振光。不難想象,如果這束垂直的偏振光不經(jīng)過扭轉(zhuǎn),就會被前面的水平偏振片完全擋住,如果被扭轉(zhuǎn)90度,就會完全通過水平偏振片。如果扭轉(zhuǎn)30度、45度、60度呢?像這樣的,我們控制液晶扭轉(zhuǎn)光線的程度,也就控制了射出光線的強(qiáng)度。射出的光線再經(jīng)過濾色片,就被轉(zhuǎn)換成了特定顏色、特定強(qiáng)度的光。而屏幕上的每個(gè)像素分成三個(gè)單元,這三個(gè)單元的濾色片顏色不同(分別是什么色,你猜),每個(gè)單元獨(dú)立加上不同強(qiáng)度的電場,調(diào)出不同強(qiáng)度的三基色,對應(yīng)的像素就表現(xiàn)出五彩繽紛的顏色了。
現(xiàn)在我們來實(shí)戰(zhàn)一下,讓一個(gè)像素顯示桔色。桔色=251份紅光+134份綠光+29份藍(lán)光,RGB碼就是FB861D,對應(yīng)的二進(jìn)制形式是 111110111000011000011101。然后,主機(jī)把這串?dāng)?shù)字告訴顯示器,顯示器就給這個(gè)像素的三個(gè)單元的液晶分別加上對應(yīng)強(qiáng)度的電場,使它們能把光線分別擰到相應(yīng)的方向。這時(shí),燈管發(fā)出的白光通過垂直偏振片被轉(zhuǎn)換成垂直偏振光,然后穿過三個(gè)單元的液晶分子,被擰成了不同方向的三股斜的偏振光,再通過水平偏振片,就能射出三股強(qiáng)度不同(分別是251,134,29)的白光來。而站在前方等待這三股白光的,分別是紅、綠、藍(lán)三個(gè)濾色片,于是它們又被轉(zhuǎn)換成了251份紅光+134份綠光+29份藍(lán)光,混合在一起,人的眼睛就看到了桔色。
計(jì)算機(jī)屏幕上五彩繽紛的顏色,都是像這樣由0和1而表現(xiàn)出來的。簡單的兩個(gè)數(shù)字,在計(jì)算機(jī)科學(xué)的舞臺上略施小技,就能給你點(diǎn)顏色看看。當(dāng)你陶醉于屏幕上一張張美侖美奐的圖片時(shí),不妨感激一下這兩個(gè)數(shù)字:回眸01之美,足以令六宮粉黛失色。(科學(xué)松鼠會http://songshuhui.net/供稿)