模擬和數字轉換/有符號和無符號量
外觀
< 模擬和數字轉換
任何數字都可以只使用“位”(數字 0 和 1)來表示;例如,二進位制數 1101 表示十三。這些位按順序排列,表示二的升冪。
最右邊的位稱為“最低有效位”(LSB),因為它表示 2 的最低次冪 1;最左邊的位稱為“最高有效位”(MSB),因為它表示 2 的最高次冪。
無符號數以一種簡單的方式表示,LSB 在最右邊,MSB 在最左邊。無符號數總是正數(或零),因為它們沒有用於表示負數的符號。
為了表示負數,我們需要實現有符號數。有兩種通用的方案來表示有符號數:符號大小或補碼。還有一些其他方案,例如補碼,但我們在這裡不討論它們。有關此主題的更多資訊,請參見數位電路的相關部分。
符號大小數與無符號數相同,只是增加了一個“符號位”。如果符號位為 0,則該數為正;如果符號位為 1,則該數為負。
實現補碼所需的數字邏輯比符號大小表示要簡單得多。因此,大多數計算機以補碼格式儲存值。補碼遵循以下規則
- 一半的數字是正數,從 0 到 (N/2)−1,其中 N 是使用位數可以表示的值的數量(包括零)。如果我們有 n 位,則此值為
- 負數是透過反轉正數的位,然後加 1 來獲得的。
例如,如果我們在四位補碼數中擁有數字 5(0101),我們可以透過反轉該數字(1010)並加 1(1011)來獲得 -5 的表示。
要獲得負數的正值,我們逆轉該過程。
例如,4 位有符號數(3 個數據位 + 1 個符號位)是
0111 = +7 0110 = +6 0101 = +5 0100 = +4 0011 = +3 0010 = +2 0001 = +1 0000 = +0 1111 = −1 1110 = −2 1101 = −3 1100 = −4 1011 = −5 1010 = −6 1001 = −7 1000 = −8
- 問) 你不是幾頁前才告訴我 1101 代表十三嗎?
是的。它也可以代表很多其他東西。位 1101 形成一個位模式,可以解釋為任何東西。當我們談論無符號算術時,1101 在十進位制數中是“13”。當我們談論有符號算術時,1101 可能意味著 −3,如果我們正在進行 4 位有符號算術。
- 在 16 位有符號算術中,1101 是 13
- 在符號大小表示中,1101 是 −5。
- 在補碼中,1101 是 −4
- 重要的是要注意,單個位模式可能具有不同的含義,具體取決於您的解釋方式。因此,保持解釋一致非常重要。
另一種型別的二進位制數稱為“浮點數”。這些數字允許使用位來表示分數量。浮點數超出了本書的範圍,但請記住,某些取樣器以浮點格式輸出值。