信息的表示和處理
第2章 信息的表示和處理·二 關(guān)鍵詞:信息存儲(chǔ),邏輯運(yùn)算,進(jìn)制轉(zhuǎn)換,C語言,信息的表示和處理 無符號(unsigned)編碼是基于傳統(tǒng)的二進(jìn)制表示法的,表示大于或者等于零的數(shù)字。 二進(jìn)制補(bǔ)碼(two's-complement)編碼是表示有符號證書的最常見的方式,有符號整數(shù)就是為正或者為負(fù)的數(shù)字。 浮點(diǎn)數(shù)(floating-point)編碼是表示實(shí)數(shù)的科學(xué)計(jì)數(shù)法的以二為基數(shù)的版本。 2.1 信息存儲(chǔ) 大多數(shù)計(jì)算機(jī)使用8位的塊,或叫做字節(jié)(byte),來作為最小的可尋址的存儲(chǔ)器單位,而不是訪問存儲(chǔ)器中單獨(dú)的位。機(jī)器級程序?qū)⒋鎯?chǔ)器視為一個(gè)非常大的數(shù)組,稱為虛擬存儲(chǔ)器(virtual memory)。存儲(chǔ)器的每個(gè)字節(jié)都由一個(gè)唯一的數(shù)字來標(biāo)示,稱為它的地址(address),所有可能地址的集合就稱為虛擬地址空間(virtual address space)。這個(gè)虛擬地址空間只是一個(gè)展現(xiàn)給機(jī)器級程序的概念性映像(image)。實(shí)際的實(shí)現(xiàn)使用的是隨機(jī)訪問存儲(chǔ)器RAM、磁盤存儲(chǔ)、特殊硬件和操作系統(tǒng)軟件的結(jié)合,來為程序提供一個(gè)看上去統(tǒng)一的字節(jié)數(shù)組。 編譯器和運(yùn)行時(shí)系統(tǒng)的一個(gè)任務(wù)就是將這個(gè)存儲(chǔ)器空間劃分為更可管理的單元,來存放不同的程序?qū)ο螅╬roject object),也就是,程序數(shù)據(jù)、指令和控制信息。有各種機(jī)制可以用來分配和管理程序不同部分的存儲(chǔ)。這種管理完全是在虛擬地址空間里完成的。
1 十六進(jìn)制表示法
十六進(jìn)制
0
1
2
3
4
5
6
7
十進(jìn)制
0
1
2
3
4
5
6
7
二進(jìn)制
0000
0001
0010
0011
0100
0101
0110
0111
?
十六進(jìn)制
8
9
A
B
C
D
E
F
十進(jìn)制
8
9
10
11
12
13
14
15
二進(jìn)制
1000
1001
1010
1011
1100
1101
1110
1111
進(jìn)制轉(zhuǎn)換不再細(xì)寫。自己靈活掌握。
2 字 每臺計(jì)算機(jī)都有一個(gè)字長,指明整書和指針數(shù)據(jù)的標(biāo)稱大?。╪ominal size)。因?yàn)樘摂M地址是以這樣的字來編碼的,所以字長決定的最重要的系統(tǒng)參數(shù)就是虛擬地址空間的最大大小。對于一個(gè)字長為n的機(jī)器而言,虛擬地址的范圍為0-(2^n)-1,程序最多方位2^n字節(jié)。 對于任何數(shù)據(jù)類型T,聲明 T *P; 表明p是一個(gè)指針變量,指向類型T的一個(gè)對象。 假設(shè)一個(gè)類型為int變量x的地址為0x100,也就是說,地址表達(dá)式&x的值為0x100.那么x的四字節(jié)將被存儲(chǔ)在存儲(chǔ)器的0x100,0x101,0x102,0x103位置。 反匯編器,是一種確定可執(zhí)行程序文件所表示的指令序列的工具。 3 運(yùn)算 布爾代數(shù)的邏輯運(yùn)算(|是OR,&就是AND,﹁就是NOT,^就是EXCLUSIVE-OR) 或:p=1或q=1時(shí),p|q=1; 且:p=1且q=1時(shí),p&q=1; 非:p=1,﹁p=0; 異或:當(dāng)p=0且q=1或p=1且q=0時(shí),p^q=1。 整數(shù)集合,用Z來標(biāo)示,形成了一個(gè)稱為環(huán)的數(shù)據(jù)結(jié)構(gòu),表示為