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