作為二維碼的上一代,一維碼或稱條形碼使用非常廣泛。利用黑白條紋之間存在非常大的反射率,當掃描器的光線掃過時,可以讀出條形碼中的資訊。不過,一維的條形碼只能包含一些簡單的編碼資訊。
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)。理論上,如果人類能夠在宇宙中存在足夠漫長的時間,二維碼是可以用完的,但這個時間實在太漫長了,也許就連宇宙本身都等不到那一天。即便二維碼真的用完,說不定遙遠未來的人類還會繼續增加維度,發明出三維碼等更高維度的條碼,其變化形態將會更多。