表示法
二進制數據的表示法
二進制數據也是採用位置計數法,其位權是以2為底的冪。例如二進制數據110.11,逢2進1,其權的大小順序為2²、2¹、2º、
、
。對於有n位整數,m位小數的二進制數據用加權係數展開式表示,可寫為:
二進制數據一般可寫為:
【例1102】將二進制數據111.01寫成加權係數的形式。
解:
二進制和十六進制,八進制一樣,都以二的冪來進位的。
二進制數
一、二進制數的表示法
二進制是計算技術中廣泛採用的一種數制。二進制數是用0和1兩個數碼來表示的數。它的基數為2,進位規則是“逢二進一”,借位規則是“借一當二”。二進制數也是採用位置計數法,其位權是以2為底的冪。例如二進制數110.11,其權的大小順序為2^2、2^1、2^0、2^-1、2^-2。對於有n位整數,m位小數的二進制數用加權係數展開式表示,可寫為:
(a(n-1)a(n-2)…a(-m))2=a(n-1)×2^(n-1)+a(n-2)×2^(n-2)+……+a(1)×2^1+a(0)×2^0+a(-1)×2^(-1)+a(-2)×2^(-2)
+……+a(-m)×2^(-m)
二進制數一般可寫為:(a(n-1)a(n-2)…a(1)a(0).a(-1)a(-2)…a(-m))2。
注意:
1.式中aj表示第j位的係數,它為0和1中的某一個數。
2.a(n-1)中的(n-1)為下標,輸入法無法打出所以用括弧括住,避免混淆。
3.2^2表示2的平方,以此類推。
【例1102】將二進制數111.01寫成加權係數的形式。
解:(111.01)2=(1×2^2)+(1×2^1)+(1×2^0)+(0×2^-1)+(1×2^-2)
二、二進制數的加法和乘法運算
二進制數的算術運算的基本規律和十進制數的運算十分相似。最常用的是加法運算和乘法運算。
1.二進制加法
有四種情況:0+0=0
0+1=1
1+0=1
1+1=0進位為1
【例1103】求(1101)2+(1011)2的和
解:1101
+1011
11000
2.二進制乘法
有四種情況:0×0=0
1×0=0
0×1=0
1×1=1
【例1104】求(1110)2乘(101)2之積
解:1110
×101
1110
0000
+1110
1000110
運算
加法
有四種情況: 0+0=0
0+1=1
1+0=1
1+1=10
0 進位為1
【例1103】求 1011(2)+11(2) 的和
解:
乘法
有四種情況: 0×0=0
1×0=0
0×1=0
1×1=1
減法
0-0=0,1-0=1,1-1=0,0-1=1。
除法
0÷1=0,1÷1=1。
拈加法
拈加法二進制是加減乘除外的一種特殊算法。
拈加法運算與進行加法類似,但不需要做進位。此算法在博弈論(Game Theory)中被廣泛利用
計算機中的十進制小數轉換二進制
計算機中的十進制小數用二進制通常是用乘二取整法來獲得的。
比如0.65換算成二進制就是:
0.65 × 2 = 1.3 取1,留下0.3繼續乘二取整
0.3 × 2 = 0.6 取0, 留下0.6繼續乘二取整
0.6 × 2 = 1.2 取1,留下0.2繼續乘二取整
0.2 × 2 = 0.4 取0, 留下0.4繼續乘二取整
0.4 × 2 = 0.8 取0, 留下0.8繼續乘二取整
0.8 × 2 = 1.6 取1, 留下0.6繼續乘二取整
0.6 × 2 = 1.2 取1,留下0.2繼續乘二取整
.......
一直循環,直到達到精度限制才停止(所以,計算機保存的小數一般會有誤差,所以在編程中,要想比較兩個小數是否相等,只能比較某個精度範圍內是否相等。)。這時,十進制的0.65,用二進制就可以表示為:01010011。
還值得一提的是,在計算機中,除了十進制是有符號的外,其他如二進制、八進制、16進制都是無符號的。
在現實生活和記數器中,如果表示數的“器件”只有兩種狀態,如電燈的“亮”與“滅”,開關的“開”與“關”。一種狀態表示數碼0,另一種狀態表示數碼1,1加1應該等於2,因為沒有數碼2,只能向上一個數位進一,就是採用“滿二進一”的原則,這和十進制是採用“滿十進一”原則完全相同。
1+1=10,10+1=11,11+1=100,100+1=101,
101+1=110,110+1=111,111+1=1000,……,
可見二進制的10表示二,100表示四,1000表示八,10000表示十六,……。
二進制同樣是“位值制”。同一個數碼1,在不同數位上表示的數值是不同的。如11111,從右往左數,第一位的1就是一,第二位的1表示二,第三位的1表示四,第四位的1表示八,第五位的1表示十六。
所謂二進制,也就是計算機運算時用的一種算法。二進制只由一和零組成。
比方說吧,你上一年級時一定聽說過“進位筒”(“數位筒”)吧!十進制是個位上滿十根小棒就捆成一捆,放進十位筒,十位筒滿十捆就捆成一大捆,放進百位筒……
二進制也是一樣的道理,個位筒上滿2根就向十位進一,十位上滿兩根就向百位進一,百位上滿兩根…… 二進制是世界上第一台計算機上用的算法,最古老的計算機里有一個個燈泡,當運算的時候,比如要表達“一”,第一個燈泡會亮起來。要表達“二”,則第一個燈泡熄滅,第二個燈泡就會亮起來。
二進制就是等於2時就要進位。
0=00000000
1=00000001
2=00000010
3=00000011
4=00000100
5=00000101
6=00000110
7=00000111
8=00001000
9=00001001
10=00001010
……
即是逢二進一,二進制廣泛用於最基礎的運算方式,計算機的運行計算基礎就是基於二進制來運行。只是用二進制執行運算,用其他進制表現出來。
其實把二進制三位一組分開就是八進制, 四位一組就是十六進制
進制轉換
十進制數轉換為二進制數、八進制數、十六進制數的方法:
二進制數、八進制數、十六進制數轉換為十進制數的方法:按權展開求和法
十進制
(1)二進制轉十進制
方法:“按權展開求和”
【例】:
規律:個位上的數字的次數是0,十位上的數字的次數是1,......,依次遞增,而十
分位的數字的次數是-1,百分位上數字的次數是-2,......,依次遞減。
注意:不是任何一個十進制小數都能轉換成有限位的二進制數。
(2)十進制轉二進制
· 十進制整數轉二進制數:“除以2取余,逆序排列”(除二取余法)
【例】:
89÷2 ……1
44÷2 ……0
22÷2 ……0
11÷2 ……1
5÷2 ……1
2÷2 ……0
1
· 十進制小數轉二進制數:“乘以2取整,順序排列”(乘2取整法)
【例】: (0.625)10= (0.101)2
0.625X2=1.25 ……1
0.25 X2=0.50 ……0
0.50 X2=1.00 ……1
十進制1至128的二進制表示:
0=0
1=1
2=10
3=11
4=100
5=101
6=110
7=111
8=1000
9=1001
10=1010
11=1011
12=1100
13=1101
14=1110
15=1111
16=10000
17=10001
18=10010
19=10011
20=10100
21=10101
22=10110
23=10111
24=11000
25=11001
26=11010
27=11011
28=11100
29=11101
30=11110
31=11111
32=100000
33=100001
34=100010
35=100011
36=100100
37=100101
38=100110
39=100111
40=101000
41=101001
42=101010
43=101011
44=101100
45=101101
46=101110
47=101111
48=110000
49=110001
50=110010
51=110011
52=110100
53=110101
54=110110
55=110111
56=111000
57=111001
58=111010
59=111011
60=111100
61=111101
62=111110
63=111111
64=1000000
65=1000001
66=1000010
67=1000011
68=1000100
69=1000101
70=1000110
71=1000111
72=1001000
73=1001001
74=1001010
75=1001011
76=1001100
77=1001101
78=1001110
79=1001111
80=1010000
81=1010001
82=1010010
83=1010011
84=1010100
85=1010101
86=1010110
87=1010111
88=1011000
89=1011001
90=1011010
91=1011011
92=1011100
93=1011101
94=1011110
95=1011111
96=1100000
97=1100001
98=1100010
99=1100011
100=1100100
101=1100101
102=1100110
103=1100111
104=1101000
105=1101001
106=1101010
107=1101011
108=1101100
109=1101101
110=1101110
111=1101111
112=1110000
113=1110001
114=1110010
115=1110011
116=1110100
117=1110101
118=1110110
119=1110111
120=1111000
121=1111001
122=1111010
123=1111011
124=1111100
125=1111101
126=1111110
127=1111111
128=10000000
八進制
二進制數轉換成八進制數:從小數點開始,整數部分向左、小數部分向右,每3位為一組用一位八進制數的數字表示,不足3位的要用“0”補足3位,就得到一個八進制數。
八進制數轉換成二進制數:把每一個八進制數轉換成3位的二進制數,就得到一個二進制數。
八進制數字與十進制數字對應關係如下:
000 -> 0 | 004-> 4 | 010=8
001 -> 1 |005 -> 5| 011=9
002 -> 2 |006 -> 6 | 012=10
003 -> 3 |007 -> 7 | 013=11
【例】:將八進制的37.416轉換成二進制數:
3 7 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2
【例】:將二進制的10110.0011 轉換成八進制:
0 1 0 1 1 0 . 0 0 1 1 0 0
2 6 . 1 4
即:(10110.0011)2 = (26.14)8
十六進制
二進制數轉換成十六進制數:二進制數轉換成十六進制數時,只要從小數點位置開始,向左或向右每四位二進制劃分一組(不足四位數可補0),然後寫出每一組二進制數所對應的十六進制數碼即可。
十六進制數轉換成二進制數:把每一個十六進制數轉換成4位的二進制數,就得到一個二進制數。
十六進制數字與二進制數字的對應關係如下:
0000 -> 0 0100 -> 4 1000 -> 8 1100 -> C
0001 -> 1 0101 -> 5 1001 -> 9 1101 -> D
0010 -> 2 0110 -> 6 1010 -> A 1110 -> E
0011 -> 3 0111 -> 7 1011 -> B 1111 -> F
【例】:將十六進制數5DF.9 轉換成二進制:
5 D F . 9
0101 1101 1111 .1001
即:(5DF.9)16 =(10111011111.1001)2{十六進制怎么會有小數點}
【例】:將二進制數1100001.111 轉換成十六進制:
0110 0001 . 1110
6 1 . E
即:(1100001.111)2 =(61.E)16
與十進制的區別
二進制與十進制的區別在於數碼的個數和進位規律有很大的區別,顧名思義,二進制的計數規律為逢二進一,是以2為基數的計數體制。10這個數在二進制和十進制中所表示的意義完全不同,在十進制中就是我們通常所說的十,在二進制中,其中的一個意義可能是表示一個大小等價於十進制數2的數值。
仿照例題1.3.1,我們可以將二進制數10表示為:10=1×2^1+0×2^0
一般地,任意二進制數可表示為:
例題 1.3.2 試將二進制數(01010110)B轉換為十進制數。
在數字電子技術和計算機套用中,二值數據常用數字波形來表示
。使用數字波形可以使得數據比較直觀,也便於使用電子示波器進行監視。圖1.3.3表示一計數器的波形。
圖1.3.3 用二進制數表示0~15波形圖
圖中給出了四個二進制波形。看這種二進制波形圖時,我們應當沿著圖中虛線所示的方向來看,即使圖中沒有標出虛線(一般都沒有標出),也要想像出虛線來。其中在每一個波形上方的數字表示了與波形對應的位的數值,最後一行則是相應的十進制數 ,其中LSB是英文Least Significant Bit的縮寫,表示最低位,MSB是Most Significant Bit的縮寫,表示二進制數的最高位。顯然,這是一組4位的二進制數,總共有16組,最左邊的二進制數為0000,最上邊的波形代表二進制數的最低位,也就是通常在十進制數中我們所說的個位數,最下面的是最高位。圖中最右邊的二進制數為1111,對應的十進制數為15。再來看看對應於十進制數5的二進制數是多少呢?是0101,對了,讀數的順序是從下往上。
二進制數在數字系統(比如計算機之間)中的傳輸的方式分為串列和並行兩種。
其中串列傳輸時二進制數是按照逐位傳遞的方式進行傳輸,根據實際情況可以從最高位或最低位開始傳輸,一般情況下是從最高位開始傳輸的。只需要一根數據線。如圖1.3.4所示,要完成八位二進制數的傳輸,需要經歷八個時鐘周期。
圖1.3.4 二進制數據的串列傳輸
(a) 兩台計算機之間的串列通信 (b) 二進制數據的串列表示
典型的例子是數據機與計算機之間的通信就是通過串列傳輸來完成的。
並行傳輸的效率要高於串列傳輸,一次可以傳輸完整的一組二進制數。但是根據所要傳輸的二進制數的位數的多少,需要備足足夠多的數據線。一般來說,常見的並行傳輸採用的數據線有8、16、32等,再多就很少見了。典型的並行傳輸例子是印表機與計算機之間的通信傳輸,見圖1.3.5。
圖1.3.5 並行傳輸數據的示意圖
(a) 計算機與印表機之間的並行通信 (b) 二進制數據的並行表示
圖1.3.5顯示了採用並行傳輸模式,只需要一個時鐘周期,即可完成八位二進制數的傳輸。
萊布尼茨
在德國圖靈根著名的郭塔王宮圖書館(Schlossbiliothke zu Gotha)保存著
一份彌足珍貴的手稿,其標題為:“1與0,一切數字的神奇淵源。這是造物的秘密美妙的典範,因為,一切無非都來自上帝。”這是德國天才大師萊布尼茨(Gottfried Wilhelm Leibniz,1646 - 1716)的手跡。但是,關於這個神奇美妙的數字系統,萊布尼茨只有幾頁異常精煉的描述。
萊布尼茨不僅發明了二進制,而且賦予了它宗教的內涵。他在寫給當時在中國傳教的法國耶穌士會牧師布維(Joachim Bouvet,1662 - 1732)的信中說:“第一天的伊始是1,也就是上帝。第二天的伊始是2,……到了第七天,一切都有了。所以,這最後的一天也是最完美的。因為,此時世間的一切都已經被創造出來了。因此它被寫作‘7’,也就是‘111’(二進制中的111等於十進制的7),而且不包含0。只有當我們僅僅用0和1來表達這個數字時,才能理解,為什麼第七天才最完美,為什麼7是神聖的數字。特別值得注意的是它(第七天)的特徵(寫作二進制的111)與三位一體的關聯。”
布維是一位漢學大師,他對中國的介紹是17、18世紀歐洲學界中國熱最重要的原因之一。布維是萊布尼茨的好朋友,一直與他保持著頻繁的書信往來。萊布尼茨曾將很多布維的文章翻譯成德文,發表刊行。恰恰是布維向萊布尼茨介紹了《周易》和八卦的系統,並說明了《周易》在中國文化中的權威地位。
八卦是由八個符號組構成的占卜系統,而這些符號分為連續的與間斷的橫線兩種。這兩個後來被稱為“陰”、“陽”的符號,在萊布尼茨眼中,就是他的二進制的中國翻版,但實際萊布尼茨是受中國陰陽太極影響,只不過他付出了諸多研究,推演出二進制。他感到這個來自古老中國文化的符號系統與他的二進制之間的關係實在太明顯了,因此斷言:二進制乃是具有世界普遍性的、最完美的邏輯語言。
另一個可能引起萊布尼茨對八卦的興趣的人是坦澤爾(Wilhelm Ernst Tentzel),他當時是圖靈根大公爵硬幣珍藏室的領導,也是萊布尼茨的好友之一。在他主管的這個硬幣珍藏中有一枚印有八卦符號的硬幣。
與中國易經聯繫
1679年3月15日戈特弗里德·威廉·萊布尼茨發明了一種計算法,用兩位數代替原來的十位數,即
1 和 0。 1701年他寫信給在北京的神父 Grimaldi(中文名字閔明我)和 Bouvet(中文名字白晉)告知自己的新發明,希望能引起他心目中的“算術愛好者”康熙皇帝的興趣。
白晉很驚訝,因為他發現這種“二進制的算術”與中國古代的一種建立在兩個符號基礎上的符號系統是非常近似的,這兩個符號分別由一條直線和兩條短線組成,即── 和 — —。這是中國最著名大概也是最古老的書《易經》的基本組成部分,據今人推測,該書大約產生於公元前第一個千年的初期,開始主要是一部占卜用書,裡邊的兩個符號可能分別代表“是”和“不”。萊布尼茨對這個相似也很吃驚,和他的筆友白晉一樣,他也深信《易經》在數學上的意義。他相信古代的中國人已經掌握了二進制並在科學方面遠遠超過當代的中國人。
這一次將數學與古代中國《易經》相聯的嘗試是不符合實際的。萊布尼茨的二進制數學指向的不是古代中國,而是未來。萊布尼茨在1679年3月15日記錄下他的二進制體系的同時,還設計了一台可以完成數碼計算的機器。我們今天的現代科技將此構想變為現實,這在萊布尼茨的時代是超乎人的想像能力的。
特點
優點
數字裝置簡單可靠,所用元件少;
只有兩個數碼0和1,因此它的每一位數都可用任何具有兩個不同穩定狀態的元件來表示;
基本運算規則簡單,運算操作方便。
缺點
用二進制表示一個數時,位數多。因此實際使用中多採用送入數字系統前用十進制,送入機器後再轉換成二進制數,讓數字系統進行運算,運算結束後再將二進制轉換為十進制供人們閱讀。
二進制和十六進制的互相轉換比較重要。不過這二者的轉換卻不用計算,每個C,C++程式設計師都能做到看見二進制數,直接就能轉換為十六進制數,反之亦然。
我們也一樣,只要學完這一小節,就能做到。
首先我們來看一個二進制數:1111,它是多少呢?
你可能還要這樣計算:1 × 2º + 1 × 2¹ + 1 × 2² + 1 × 2³ = 1 × 1 + 1 × 2 + 1 × 4 + 1 × 8 = 15。
然而,由於1111才4位,所以我們必須直接記住它每一位的權值,並且是從高位往低位記,:8、4、2、1。即,最高位的權值為2³ = 8,然後依次是 2² = 4,2¹=2, 2º = 1。
記住8421,對於任意一個4位的二進制數,我們都可以很快算出它對應的10進制值。
下面列出四位二進制數 xxxx 所有可能的值(中間略過部分)
僅4位的2進制數快速計算方法 十進制值 十六進值
1111 = 8 + 4 + 2 + 1 = 15 F
1110 = 8 + 4 + 2 + 0 = 14 E
1101 = 8 + 4 + 0 + 1 = 13 D
1100 = 8 + 4 + 0 + 0 = 12 C
1011 = 8 + 0 + 2+ 1 = 11 B
1010 = 8 + 0 + 2 + 0 = 10 A
1001 = 8 + 0 + 0 + 1 = 9
....
0001 = 0 + 0 + 0 + 1 = 1
0000 = 0 + 0 + 0 + 0 = 0 0
二進制數要轉換為十六進制,就是以4位一段,分別轉換為十六進制。
如(上行為二制數,下面為對應的十六進制):
1111 1101 , 1010 0101 , 1001 1011
F D , A 5 , 9 B
反過來,當我們看到 FD時,如何迅速將它轉換為二進制數呢?
先轉換F:
看到F,我們需知道它是15(可能你還不熟悉A~F這六個數),然後15如何用8421湊呢?應該是8 + 4 + 2 + 1,所以四位全為1 :1111。
接著轉換 D:
看到D,知道它是13,13如何用8421湊呢?應該是:8 + 4 + 1,即:1101。
所以,FD轉換為二進制數,為: 1111 1101
由於十六進制轉換成二進制相當直接,所以,我們需要將一個十進制數轉換成2進制數時,也可以先轉換成16進制,然後再轉換成2進制。
比如,十進制數 1234轉換成二制數,如果要一直除以2,直接得到2進制數,需要計算較多次數。所以我們可以先除以16,得到16進制數:
被除數 計算過程 商 餘數
1234 1234/16 77 2
77 77/16 4 13 (D)
4 4/16 0 4
結果16進制為: 0x4D2
同樣,如果一個二進制數很長,我們需要將它轉換成10進制數時,除了前面學過的方法是,我們還可以先將這個二進制轉換成16進制,然後再轉換為10進制。
其他
今天,西方學界已經獲得了普遍的共識:八卦與二進制沒有直接的關係。首先,中國的數字系統是十進制的。其次,依照我們今天掌握的史料,秦、漢以上,中國還沒有--在萊布尼茨的二進制意義上的--“零”的概念。假如說《周易》中繫辭的部分講的陰、陽化生萬物就是萊布尼茨所說的0、1為萬物之源,這是難以成立的。今本《周易》大概可以分成三個部分,第一是卦,第二是爻,第三是傳,即所謂的“十翼”。其中,卦的部分應該是最古老的。從《尚書》、《周禮》、《左傳》、《國語》等先秦文獻,以及後來的考古發掘,我們對西周初年的龜卜有了初步的認識。但是,對於“易卜”我們幾乎沒有任何詳細可靠的資料。《周易》中的卦也許就是韓宣子所見到的“易象”。無論如何,我們在卦、爻中基本上看不到陰、陽的影子。陰、陽的系統基本上是在《易傳》中得到完善的發展與表述的,儘管它的淵源一定早過《易傳》。而《易傳》顯然是十進制的體系。通過《漢書·律曆志》的記載,我們不僅可以知道,在《周易》大行於世的時代歷算使用的是十進制,而且其中關鍵數不是1,更不是0,而是2(陰、陽)和3(天、地、人)。
(相見拙文《儒家對數學幾何的熱愛》)另外,道哲學體系中的重要概念“無”與萊布尼茨的0沒有任何直接關係。羅素在《數理哲學道論》中將“0”解釋為:一切沒有分子的類的類。這正是萊布尼茨心目中的“零”。而羅素的這個解釋正是受到了著名德國語言哲學家弗萊格(GottlobFrege,1848-1925)的著作GrundlagederArithmetik(《算術基礎》)的啟發。弗萊格、羅素的數論體系中的“零”換成中國話說,就是一切“無”的總稱。而道哲學中的“無”不是卻不是很多“無”的總和,而是那一個特定的“無”,是那一個“道”的本質。簡單地說,萊布尼茨以來三百年間,西方的科學家與哲學家作過無數的研究,都不能發現二進制與八卦有什麼實質性的聯繫。而在我們中國,秦漢以下,除去利用對八卦特殊的解釋建立哲學系統的努力,我們也基本上看不到對它具有說服力的解釋。
採用原因
(1)技術實現簡單,計算機是由邏輯電路組成,邏輯電路通常只有兩個狀態,開關的接通與斷開,這兩種狀態正好可以用“1”和“0”表示。
(2)簡化運算規則:兩個二進制數和、積運算組合各有三種,運算規則簡單,有利於簡化計算機內部結構,提高運算速度。
(3)適合邏輯運算:邏輯代數是邏輯運算的理論依據,二進制只有兩個數碼,正好與邏輯代數中的“真”和“假”相吻合。
(4)易於進行轉換,二進制與十進制數易於互相轉換。
(5)用二進制表示數據具有抗干擾能力強,可靠性高等優點。因為每位數據只有高低兩個狀態,當受到一定程度的干擾時,仍能可靠地分辨出它是高還是低。
處理數據
我們在使用資料庫時,有時會用到圖像或其它一些二進制數據,這個時候你們就必須使用
getchunk這個方法來從表中獲得二進制大對象,我們也可以使用AppendChunk來把數據插入到表中.
我們平時來取數據是這樣用的!
Getdata=rs("fieldname")
而取二進制就得這樣
size=rs("fieldname").acturalsize
getdata=rs("fieldname").getchunk(size)
我們從上面看到,我們取二進制數據必須先得到它的大小,然後再搞定它,這個好像是ASP中處理二進制數據的常用方法,我們在獲取從客戶端傳來的所有數據時,也是用的這種方法。
下面我們也來看看是怎樣將二進制數據加入資料庫
rs("fieldname").appendchunk binarydata
一步搞定!
另外,使用getchunk和appendchunk將數據一步一步的取出來!
下面演示一個取數據的例子!
Addsize=2
totalsize=rs("fieldname").acturalsize
offsize=0
Do Where offsize Binarydata=rs("fieldname").getchunk(offsize)
data=data&Binarydata
offsize=offsize+addsize
Loop
當這個程式運行完畢時,data就是我們取出的數據.
發展
進制是逢2進位的進位制,0、1是基本算符;計算機運算基礎採用二進制。電腦的基礎是二進制,那么,什麼是二進制呢,為什麼需要二進制呢?在早期設計的機械計算裝置中,使用的不是二進制,而是十進制或者其他進制,利用齒輪的不同位置表示不同的數值,這種計算裝置可能更加接近人類的思想方式。比如說一個計算設備有十個齒輪,它們級連起來,每一個齒輪有十格,小齒輪轉一圈大齒輪走一格。這就是一個簡單的十位十進制的數據表示設備了,可以表示0到999999999的數字。配合其他的一些機械設備,這樣一個簡單的基於齒輪的裝置就可以實現簡單的十進制加減法了。這種通過不同的位置上面不同的符號表示數值的方法就是進制表示方法。常用的進制主要是十進制(因為我們有十個手指,所以十進制是比較合理的選擇,用手指可以表示十個數字,0的概念直到很久以後才出現,所以是1-10而不是0-9)。電子計算機出現以後,使用電子管來表示十種狀態過於複雜,所以所有的電子計算機中只有兩種基本的狀態,開和關。也就是說,
電子管的兩種狀態決定了以電子管為基礎的電子計算機採用二進制來表示數字和數據。常用的進制還有8進制和16進制,在電腦科學中,經常會用到16進制,而十進制的使用非常少,這是因為16進制和二進制有天然的聯繫:4個二進制位可以表示從0到15的數字,這剛好是1個16進制位可以表示的數據,也就是說,將二進制轉換成16進制只要每4位進行轉換就可以了。二進制的“00101000”直接可以轉換成16進制的“26”。一個字是電腦中的基本存儲單元,根據計算機字長的不同,字具有不同的位數,現代電腦的字長一般是32位的,也就是說,一個字的位數是32。位元組是8位的數據單元,一個位元組可以表示0-255的數據。對於32位字長的現代電腦,一個字等於4個位元組,對於早期的16位的電腦,一個字等於2個位元組。