資料表示法:位元、位元組與數值

符號位元、最高有效位元與最低有效位元

/ em-ess-bee, el-ess-bee /

在一個多位元數字裡,並非所有位元都平等。就像 1000 最左邊的位數遠比最右邊的重要,一個位元組的各位元也有不同的權重。最高有效位元(MSB)是位值最大的那個——「最上面」的位元——而最低有效位元(LSB)是值最小的那個,「最下面」、只值 1 的位元。為它們命名,讓我們能精確地談論我們指的是一個數字的哪一端。

在一個普通的 8 位元無號位元組裡,MSB 值 128,LSB 值 1。我們通常把數字畫成 MSB 在左、LSB 在右,呼應我們寫十進位的方式。LSB 有個迷人的日常用途:它能立刻告訴你一個數是偶是奇,因為最低位元是「1 的位置」——LSB 為 0 則該數為偶,為 1 則為奇,這就是為什麼「x & 1」是經典的奇數測試。MSB 也擔當特殊角色:在「有號」數裡它是符號位元,0 代表非負,1 代表負。

所以 MSB 視解讀而戴著兩頂帽子。把一個位元組讀成無號數,它的最高位元就只是 128 的位置,一個普通的數值位元;讀成有號二補數,同一個最高位元就變成符號,帶負權重。這又是「模式與解讀」的另一張臉,也是為什麼位移和遮罩最高位元需要小心:最高位元意味著「+128」還是「這是負的」,完全取決於你用的型別。

在位元組 1000 0001 裡:MSB(最左)是 1,LSB(最右)是 1。當無號數是 129;當有號二補數是 -127。LSB 為 1 表示這個值是奇數。

MSB = 最上面/最大的位元(有號時即符號位元);LSB = 最下面值 1 的位元。

MSB 和 LSB 描述的是一個數字「內部」的位元「位置」;別把它們和最高/最低有效「位元組」搞混,後者關乎位元組序——整個位元組在記憶體裡的儲存順序。

又稱
most significant bitleast significant bithigh bit符號位元