二进制(bit)整数
計算機以電子電荷集合的形式在內存中保存指令和數據。用數字來表示這些內容就需要系統能夠適應開 / 關(on/off)或真 / 假(true/false)的概念。
?
二進制數(binary number)用 2 個數字作基礎,其中每一個二進制數字(稱為位,bit)不是 0 就是 1。
位自右向左,從 0 開始順序增量編號。左邊的位稱為最高有效位(Most Significant Bit, MSB)右邊的位稱為最低有效位(LSB, least significant bit)。一個 16 位的二進制數,其 MSB 和 LSB 如下圖所示:
二進制整數可以是有符號的,也可以是無符號的。有符號整數又分為正數和負數,無符號整數默認為正數,零也被看作是正數。
在書寫較大的二進制數時,有些人喜歡每 4 位或 8 位插入一個點號,以增加數字的易讀性。比如,1101.1110.0011.1000.0000 和 11001010.10101100
無符號二進制整數
從 LSB 開始,無符號二進制整數中的每一個位代表的是 2 的加 1 次冪。下圖展示的是對一個 8 位的二進制數來說,2 的冪是如何從右到左增加的:
下表列出了從 20?到 215?的十進制值。
| 20 | 1 | 28 | 256 |
| 21 | 2 | 29 | 512 |
| 22 | 4 | 210 | 1024 |
| 23 | 8 | 211 | 2048 |
| 24 | 16 | 212 | 4096 |
| 25 | 32 | 213 | 8192 |
| 26 | 64 | 214 | 16384 |
| 27 | 128 | 215 | 32768 |
無符號二進制整數到十進制數的轉換
對于一個包含 n 個數字的無符號二進制整數來說,加權位記數法(weighted positional notation)提供了一種簡便的方法來計算其十進制值:
dec = ( Dn-1?x 2n-1?) + ( Dn-2?x 2n-2?) +…+ ( D1?x 21?)+ ( D0?x 20?)
D 表示一個二進制數字。比如,二進制數 00001001 就等于 9。計算該值時,剔除了數字等于 0 的位:
( 1 X 23?) + ( 1 X 20?) = 9
下圖表示了同樣的計算過程:
無符號十進制整數到二進制數的轉換
將無符號十進制整數轉換為二進制,方法是不斷將這個整數除以 2,并將每個余數記錄為一個二進制數字。下表展示的是十進制數 37 轉換為二進制數的步驟。余數的數字,從第二行開始,分別表示的是二進制數字D0
D1、D2、D3、D4 和?D5:
| 37/2 | 18 | 1 | 4/2 | 2 | 0 |
| 18/2 | 9 | 0 | 2/2 | 1 | 0 |
| 9/2 | 4 | 1 | 1/2 | 0 | 1 |
將表中余數列的二進制位逆序連接(D5,D4,…),就得到了該整數的二進制值 100101。由于計算機總是按照 8 的倍數來組織二進制數字,因此在該二進制數的左邊增加兩個 0,形成 00100101。
提示:有多少位呢?設無符號十進制值為 n,其對應的二進制數的位數為 b,用一個簡單的公式就可以計算出 b : b = (log2n) 的上限。比如,如果 n=17,則 log217 = 4.087 463,取其上限的最小整數 5。大多數計數器沒有以 2 為底的對數運算,但是有些網頁可以幫助實現這種計算。
下一篇:二進制加法運算
總結
以上是生活随笔為你收集整理的二进制(bit)整数的全部內容,希望文章能夠幫你解決所遇到的問題。