作為二維碼的上一代,一維碼或稱條形碼使用非常廣泛。利用黑白條紋之間存在非常大的反射率,當掃描器的光線掃過時,可以讀出條形碼中的信息。不過,一維的條形碼只能包含一些簡單的編碼信息。
1994年,在條形碼的基礎上,日本科學家原昌宏增加了一個維度,發明出了可以存儲大量信息的二維碼。如今,二維碼已經深入我們生活的方方面面,我們幾乎每天都要用智能手機掃描二維碼,或者生成二維碼,以此來收付款、瀏覽信息。
據估計,我國現在每年可以用掉上萬億個二維碼,全球使用的二維碼數量還要再多幾倍。估算下來,全球每天使用掉的二維碼可達100億。也就是説,全球78億人,平均每人每天用了超過1個二維碼。要知道,全球大約有36億人(佔全球人口的46%)沒有用過互聯網。由此可見,二維碼的消耗量還是非常大的。
隨着互聯網和智能手機的進一步普及,越來越多的人將會連上網絡,二維碼的消耗速率也會越來越快。那麼,二維碼最終會被用完嗎?如果用完二維碼該怎麼辦?
為回答這個問題,先來了解一下二維碼的原理。在計算機的世界中,一切的信息都被編碼為0和1,這是因為計算機的邏輯只認得這樣“非黑即白”的信息。因此,二維碼信息也要直觀地顯示出0和1。
在二維碼中,白點代表0,黑點代表1。信息被編碼為二進制的形式,然後再根據某種規律分佈在兩個維度上。二維碼掃描器會按照相應的規則來讀取信息,這樣我們就能知道二維碼上面的東西是什麼。二維碼的自由度更大,可以存儲豐富的信息,所以它們現在應用十分廣泛。
那麼,二維碼總共會有多少種變化形態呢?
目前,標準的二維碼共有40種,最小為21×21矩陣,最大為177×177,另外常見的還包括25×25、29×29、33×33、47×47、117×117。這裏以33×33版本為例,來説明一下二維碼的數量有多少。
在33×33版本中,總共包含了1089個方塊。不過,並不是每個塊都能填進去有意義的信息。在二維碼中,三個黑色的大方塊用於掃描定位,不包含信息。每個用於定位的黑色大方塊由7×7=49個小塊組成,定位用掉的方塊總數為49×3=147塊。因此,用於表示信息的方塊總數為1089-147=942塊。每個方塊有兩種填充方式,要麼0要麼1,所以33×33版本的二維碼總數為2^942,即3.7×10^283(37後面跟了282個0)。這是什麼概念呢?
全世界每天消耗二維碼100億個,則每年消耗3.65萬億個。如果自宇宙在138億年前誕生以來,人類就開始以這個速度消耗二維碼,人類也才用了5.0×10^22個。也就是説,33×33版本足夠人類使用7.3×10^260個“138億年”,或者説10^271年,即1000萬億億…前後共計33個億…億億年。
這還只是考慮到33×33版本,如果再算上另外39個版本,二維碼總數更加巨大,例如,177×177版本的變化總數高達5.2×10^9386(2^31182)。理論上,如果人類能夠在宇宙中存在足夠漫長的時間,二維碼是可以用完的,但這個時間實在太漫長了,也許就連宇宙本身都等不到那一天。即便二維碼真的用完,説不定遙遠未來的人類還會繼續增加維度,發明出三維碼等更高維度的條碼,其變化形態將會更多。