隨著智能手機全面普及開來,二維碼也深入我們的生活,我們在很多地方都要用手機來掃一下二維碼,例如,加好友、手機支付、打開網站。全球每天用掉的二維碼多達100億,那麼,二維碼會用完嗎?如果二維碼用完該怎麼辦呢?
關於這個問題,先來了解一下二維碼的前身:一維碼,也就是我們平時所熟知的條形碼。
條形碼是由一系列粗細不等的黑色條紋以及空白組成,其排列方式遵循編碼規則,其中隱藏著物品信息。掃描器的光線照射到條形碼上時,黑色部分會吸收光,而白色部分會反射光。掃描器接收到反射光之後,就能解析出條形碼上的信息。
條形碼是一維的,長度方向上沒有信息,所有的數據都在寬度方向上。如果物品的信息很多,條形碼會變得很長,這樣使用起來變得不方便。而且條形碼只能編碼字母、數字、符號,像漢字等複雜的信息無法編碼。
在條形碼的基礎上,人們發明了二維碼。由於兩個方向都能記錄信息,所以二維碼可以攜帶豐富的數據,漢字也能被編碼。因此,二維碼得到十分廣泛的應用。
那麼,信息是如何編寫到二維碼中的呢?二維碼上的黑點和白點代表什麼呢?
不管是手機,還是計算機,它們的處理器只能識別0和1。為了讓機器能夠識別信息,需要對單個數字、字母、符號、漢字等進行逐一編碼,它們都能用0和1來表示。
在製作二維碼時,信息被轉換成特定的0和1二進制編碼,然後用白點表示0,用黑點表示1,它們按照一定的規則進行排列。再加上三個用於定位的大黑塊,就能得到最終的唯一二維碼。另外,二維碼還有容錯機制,如果二維碼缺失或汙損的比例不超過三成,二維碼閱讀器仍然可以準確讀取信息。
那麼,二維碼共有多少個呢?二維碼會被用完嗎?
在現行的二維碼中,最小的矩陣尺寸為21×21,總共包含441個點,每個點都可以是0或者1,所以總的變化數量為2^441,即5.6×10^132,相當於5.6萬億億……億億(共計16個億)。相比之下,可觀測宇宙中的粒子總數的數量級為10^80。再排除掉糾錯碼、定位碼,所能產生的二維碼個數仍然是一個十分巨大的數字。
即便全世界每天使用100億個二維碼,用完這些將需要極其漫長的時間,遠遠超過宇宙目前的年齡(138億年)。宇宙從頭再來數以億計次,每天使用幾百億個二維碼,仍然用不完二維碼。
要知道,除了21×21矩陣尺寸外,還有另外幾十個更大的尺寸。最大的可達177×177,其中包含31329個點,除去其他碼,這樣可以產生的二維碼數量高達2^23624,相當於3.4×10^7111。
可觀測宇宙中存在最少2000億個星系,就算每個星系中存在數以萬計的智慧文明,大家一起使用二維碼長達宇宙年齡的時間,仍然用不完二維碼。因此,我們無需擔心二維碼會耗盡的問題。