基本數據類型

1.1 拆分

將簡單規則重複應到簡單事物上,往往可以構成複雜的事物。將上面觀點反過來看,複雜的事物,往往可以拆分成下面兩者的重複:

  • 更簡單的事物
  • 簡單的規則

一直拆分下去,肯定會碰到一個起點,不可以再進行拆分。不可再進行拆分,計算機術語中稱呼為原子(atom)性。原子英文為atom,源自希臘語 atomos,原意就是「不可分割的」。以前的物理學認為原子是組成物體的最基本微粒。

每個學科都有一個起點,在此科學的討論範圍內是最基本的。自然了,這個科學中最基本的,很可能在另外的科學中是可以推到出來的。但不管怎樣,某個討論範圍內肯定會有個起點。

程序可以大致粗略拆分成兩部分:

  • 數據
  • 代碼

而其實數據和代碼可以統一起來,代碼可以編碼成數據,假如約定一個規則數據也可以被解釋執行,也成為了代碼。但這個東西有點玄了,我理解不了。

計算機中,所以東西都可以編碼成數據,包括一段音樂,一張圖片,一部電影,一個軟體。

1.2 位(Bit)

從拆分的角度,數據一直拆分,會到達某個不可以再進行拆分的,最基本的數據單位。這個最基本的數據單位叫位(bit)。

1 bit,可以表示2種狀態。2 bit 靠在一起呢,根據簡單的排列組合規則,可以表示2 * 2 = 4種狀態。3 bit,可以表示2 * 2 * 2 = 8 種狀態。依次類推,8 bit 就可以表示 256 種;9 bit 就是 512 種;10 bit就是1024種。

先停一停,有疑問,為什麼1 bit可以表示2種狀態,而不是3種或者是4種?為什麼位就是最基本的單位?

上面2個問題其實是同一個問題。位只是個名字,我們只是將可以表示2種狀態的數據單位叫位,那自然1位可以表示2種狀態。這個問題就如為什麼1+1 = 2?因為我們將1+1的結果叫做2,那自然1+1=2了。

更準確的問法是為什麼表示2種狀態的數據單位最基本?

狀態個數是自然數,不可能是小數。比2小的自然數只有1,而 1 * 1 = 1,那就算怎麼組合起來也只可以表示1,不可以用來表示大千世界。而又假如定義成3種狀態最小,但是3種狀態,可以拆分用2個bit來表示(去掉一個狀態不用就是了),自然也就不是最基本的了。

計算機中所有東西可以表示成數據,數據可以拆分成一個一個位。位是計算機世界的起點。

既然1 bit可以表示兩種狀態。那就需要區分?當只有1個時候是不用區分的,但當出現2個或者2個以上就需要進行區分,你假若不進行區分其實就等於只有1個。

假如大家只能識別一種紅色,那就叫它紅色就行,但有多種紅色,就需要其它方式來區分,名字是區分的一種方式,可以給不同的紅取名字,比如粉紅、玫瑰紅、深紅、淺紅。

同樣當只有1個狀態的時候,我們可以就叫它狀態。但當有2個狀態時,我們就需要說。

  • a 狀態,b狀態
  • 甲狀態,乙狀態
  • 第1狀態,第2狀態

計算機中,我們將兩個狀態,稱成0和1,0和1是構成二進位。我們也經常聽到其它人說說計算機採用二進位,所有東西都用0和1構成。儘管我一直很懷疑說這些話的人是否真知道是啥意思。

我們已經將位存儲的狀態,編碼成0和1兩個數字了。而位是數據的最小單位,很自然而然的,所有數據都可以編碼成數字了。

(未完待續)


推薦閱讀:

金山詞霸 iOS 版是如何實現長時間後台查詞以及發音的?
OS X 和 iOS 平台的 iWork 和 iLife 免費贈送政策具體是怎樣的?
蘋果發布iOS 11.2.1正式更新,解決相機對焦問題
為什麼設置圖標習慣用齒輪或扳手來表示?
假如 PC 有一個類似 iOS 的通知系統,不用開某樣軟體也能收到通知,優缺點有哪些?

TAG:编程 | Swift语言 | iOS |