跳至內容

PBASIC 程式設計/資料型別

來自華夏公益教科書,開放書籍,構建開放世界

二進位制數

[編輯 | 編輯原始碼]

當我們想到日常使用的數字時,我們想到的是十進位制數字。這意味著我們可以使用 10 個不同的數字:0、1、2、3、4、5、6、7、8 和 9。使用這 10 個數字和 10 的冪,我們可以建立系統中的任何數字

二進位制或“二進位制”系統中,我們只有兩個數字:0 和 1。為了在二進位制中生成一個數字,我們使用 2 的冪而不是 10 的冪

在討論不同系統中的數字時,通常使用下標。下標 10 表示數字為十進位制,下標 2 表示數字為二進位制。例如

常用資料型別

[編輯 | 編輯原始碼]

計算機非常有限,它們儲存數字的空間是固定的。這意味著有固定數量的位可用,不多也不少。某些大小的數字非常常見,因此它們有特殊的名稱。

位元是一個二進位制數字,要麼是 0 要麼是 1。

位元組

[編輯 | 編輯原始碼]

位元組是 4 個位元,可以包含 0 到 15 的值。

位元組

[編輯 | 編輯原始碼]

位元組是 8 個位元(2 個位元組),可以包含 0 到 255 的值。

是 16 個位元長(2 個位元組或 4 個位元組),可以包含 0 到 65535 的值。

可用儲存空間

[編輯 | 編輯原始碼]

BASIC Stamp 有 128 個位元組(64 個字)的資料儲存空間,你的程式可以將其用作變數。我們將在後面討論變數。

使用計算機數字時,存在一些限制。

為了同時支援正數和負數,PBASIC 需要“竊取”數字中的一個位元來表示符號。因此,我們所有資料型別的範圍都會變小

位元
位元不能有符號。
位元組
帶符號的位元組可以從 -8 到 7
位元組
帶符號的位元組可以從 -128 到 127
帶符號的字可以從 -32768 到 32767

負數以一種稱為二進位制補碼的特殊方式儲存。我們這裡不會討論這個。

一些計算機能夠處理分數,稱為“浮點數”。但是,BASIC Stamp 不能處理分數。這意味著每當我們嘗試使用分數時,BASIC Stamp 都會始終向下取整。這意味著數字 1.9 在 BASIC Stamp 內部會變成 1。有些人可能覺得奇怪

但是,在計算機中,這是很常見的。

資料型別具有固定寬度,它們無法儲存過大的數字。如果我們嘗試將過大的數字儲存在變數中,最上面的位元將被“截斷”。如果我們談論的是位元組,我們可以寫

這稱為溢位,是我們在進行算術運算時需要注意的。如果位元組或位元組太小,我們總是可以使用字來代替。但是,如果我們想儲存一個大於 65535 的數字,那麼我們就遇到了麻煩!

編寫數字

[編輯 | 編輯原始碼]

程式設計師可能希望用多種方式指定數字:二進位制、十進位制或十六進位制。十六進位制(我們將在本書中不討論)是另一個使用 16 為基數的有用數字系統。

要寫入十進位制數,我們只需編寫不帶字首的數字,例如: "99"。如果我們要寫入二進位制數,我們使用 "%" 字首,例如: "%110011"。要寫入十六進位制,我們將使用 "$" 字首,如下所示: "$AF99"。

在計算機中,所有內容都以二進位制形式儲存。這意味著即使不是數字的東西,比如字母或其他字元,也是使用二進位制數儲存的。有一個特殊的程式碼將每個字元分配給一個特殊的二進位制模式,稱為 **ASCII**。要以 ASCII 形式寫入字母,我們使用雙引號,例如

MyVariable = "A"

請注意,數字和該數字的 ASCII 碼並不相同。

MyVariable = 1
MyVariable = "1"

這兩個不相同!然而,ASCII 有一個特殊的屬性,所有字元和數字都按從低到高的順序排列,因此在某些情況下我們可以對 ASCII 字元進行數學運算。

MyVariable = "A" + 1

現在 MyVariable 等於 "B"!此外,我們可以透過使用一個簡單的關係將數字轉換為常規的二進位制數。

MyVariable = "1" - "0"

現在 MyVariable 等於二進位制數 1。我們將在後面討論變數,但這些示例目前應該不言自明。

華夏公益教科書