第11章C語言的最小數(shù)據(jù)單位——位_第1頁
第11章C語言的最小數(shù)據(jù)單位——位_第2頁
第11章C語言的最小數(shù)據(jù)單位——位_第3頁
第11章C語言的最小數(shù)據(jù)單位——位_第4頁
第11章C語言的最小數(shù)據(jù)單位——位_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1第第1111章章 C C語言的最小數(shù)據(jù)單位語言的最小數(shù)據(jù)單位位位 2第第1111章章 C C語言的最小數(shù)據(jù)單位語言的最小數(shù)據(jù)單位位位 n11.1 位運(yùn)算基礎(chǔ) n11.2 位運(yùn)算符 n11.3 位運(yùn)算實(shí)例 n11.4 位段 n11.5 小結(jié) 311.1 位運(yùn)算基礎(chǔ) n11.1.1 位與字節(jié)n11.1.2 原碼n11.1.3 反碼n11.1.4 補(bǔ)碼 411.1.1 位與字節(jié)n位(bit):表示一個(gè)二進(jìn)制數(shù)碼0或1,是電子計(jì)算機(jī)中最小的數(shù)據(jù)單位。n字節(jié)(Byte):8個(gè)二進(jìn)制位構(gòu)成1個(gè)“字節(jié)”,它表示作為一個(gè)完整處理單位的8個(gè)二進(jìn)制數(shù)碼。它是存儲(chǔ)空間的基本計(jì)量單位。其中,最右邊的一位稱為“最低有

2、效位”或“最低位”。最左面的一位稱為“最高有效位”或“最高位”,如圖所示:511.1.2 原碼n原碼表示是機(jī)器數(shù)的一種簡單的表示法。其符號(hào)位用0表示正號(hào),用1表示負(fù)號(hào),數(shù)值用二進(jìn)制形式表示。設(shè)有一數(shù)為X,則原碼表示可記作(X)原。例如:(11)原=00001011(-11)原=10001011n原碼表示數(shù)的范圍與二進(jìn)制位數(shù)有關(guān)。當(dāng)用8位二進(jìn)制來表示整數(shù)原碼時(shí),其表示范圍:n最大值為01111111,其真值為(127)10。最小值為11111111,其真值為(-127)10。對0有兩種表示形式:n(+0)原=00000000n(-0)原=10000000n+0和-0代表的都是0,但表示方法卻有兩

3、種。 611.1.3 反碼n用原碼進(jìn)行兩個(gè)整數(shù)的加法運(yùn)算中沒有問題,問題出現(xiàn)在帶符號(hào)位的負(fù)數(shù)身上。為了解決這個(gè)問題,可對除符號(hào)位外的其余各位逐位取反,就產(chǎn)生了反碼。 n機(jī)器數(shù)的反碼可由原碼得到。如果機(jī)器數(shù)是正數(shù),則該機(jī)器數(shù)的反碼與原碼相同,如果機(jī)器數(shù)是負(fù)數(shù),則該機(jī)器數(shù)的反碼是對它的原碼(符號(hào)位除外)各位取反而得到的。設(shè)有一數(shù)X,則X的反碼表示記作(X)反。例如:(11)反=(00001011)原=00001011(-11)反=(10001011)原=11110100711.1.4 補(bǔ)碼n在反碼中0還是有正負(fù)之分。而在人們的計(jì)算概念中零是沒有正負(fù)之分的。n另外,原碼和反碼不便于計(jì)算機(jī)內(nèi)的運(yùn)算,因

4、為在計(jì)算時(shí)要單獨(dú)處理符號(hào)位,這很不方便。要是有一種方法能將符號(hào)位和其它位統(tǒng)一處理、對減法也按加法處理就好了。n為了解決這個(gè)問題于是就引入了補(bǔ)碼概念。所以補(bǔ)碼的設(shè)計(jì)目的是:n(1)使符號(hào)位能與有效值部分一起參加運(yùn)算,從而簡化運(yùn)算規(guī)則。補(bǔ)碼機(jī)器數(shù)中的符號(hào)位,并不是強(qiáng)加上去的,是數(shù)據(jù)本身的自然組成部分,可以正常地參與運(yùn)算。n(2)使減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,進(jìn)一步簡化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)。 n機(jī)器數(shù)的補(bǔ)碼可由原碼得到。如果機(jī)器數(shù)是正數(shù),則該機(jī)器數(shù)的補(bǔ)碼與原碼一樣,如果機(jī)器數(shù)是負(fù)數(shù),則該機(jī)器數(shù)的補(bǔ)碼是對它的原碼(除符號(hào)位外)各位取反后整個(gè)數(shù)加1得到的。 811.2 位運(yùn)算符n11.2.1 按位與運(yùn)算

5、符n11.2.2 按位或運(yùn)算符n11.2.3 按位異或運(yùn)算符n11.2.4 按位取反運(yùn)算符n11.2.5 左移運(yùn)算符n11.2.6 右移運(yùn)算符 911.2.1 按位與運(yùn)算符n按位與運(yùn)算符“&”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)制位進(jìn)行“與”運(yùn)算。即只有對應(yīng)的兩個(gè)二進(jìn)制位均為1時(shí),結(jié)果位才為1,否則為0。參與運(yùn)算的數(shù)以補(bǔ)碼方式出現(xiàn)。即:0&0=0 0&1=0 1&0=0 1&1=1【例11-1】本實(shí)例演示了求9&5。n按位與運(yùn)算符“&”有以下應(yīng)用:n(1)清0 n(2)保留某些位)保留某些位 n(3)取某個(gè)數(shù)中某些指定位 10

6、11.2.2 按位或運(yùn)算符n按位或運(yùn)算符“|”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)制位相或。只要對應(yīng)的二個(gè)二進(jìn)制位有一個(gè)為1時(shí),結(jié)果位就為1,否則為零。參與運(yùn)算的兩個(gè)數(shù)均以補(bǔ)碼出現(xiàn)。即:0|0=0 0|1=1 1|0=1 1|1=1【例11-2】本實(shí)例演示了求9|5。 1111.2.3 按位異或運(yùn)算符n按位異或運(yùn)算符“”是雙目運(yùn)算符。其功能是參與運(yùn)算的兩數(shù)各對應(yīng)的二進(jìn)制位相異或,即當(dāng)兩個(gè)對應(yīng)的二進(jìn)制位相異時(shí),結(jié)果為1,否則為0。參與運(yùn)算數(shù)仍以補(bǔ)碼出現(xiàn)。即:00=0 01=1 10=1 11=0【例11-3】本實(shí)例演示了求95。1211.2.4 按位取反運(yùn)算符n按位取反運(yùn)算符“”是單

7、目運(yùn)算符,具有右結(jié)合性。其功能是對參與運(yùn)算數(shù)的各個(gè)位按位求反,即0變?yōu)?,1變?yōu)?。如9的運(yùn)算為: (00001001)結(jié)果為:11110110。 1311.2.5 左移運(yùn)算符n左移運(yùn)算符“”是雙目運(yùn)算符。其功能把“”左邊運(yùn)算數(shù)的各二進(jìn)制位全部左移若干位,由“”是雙目運(yùn)算符。其功能是把“”左邊的運(yùn)算數(shù)的各二進(jìn)制位全部右移若干位,“”右邊的數(shù)指定移動(dòng)的位數(shù)。n在右移時(shí),符號(hào)位將隨同移動(dòng)。當(dāng)為正數(shù)時(shí),最高位補(bǔ)0,而為負(fù)數(shù)時(shí),符號(hào)位為1,最高位是補(bǔ)0或是補(bǔ)1取決于編譯系統(tǒng)的規(guī)定。Turbo C和很多系統(tǒng)規(guī)定為補(bǔ)1。n右移一位就相當(dāng)于該數(shù)除以2,右移n位就相當(dāng)于該數(shù)除以2n。上面的例子中15左移2位后

8、變成3=15/22。 【例11-4】本實(shí)例演示了無符號(hào)整數(shù)的右移運(yùn)算?!纠?1-5】本實(shí)例演示了有符號(hào)整數(shù)的右移運(yùn)算。 1511.3 位運(yùn)算實(shí)例n【例11-6】基本思路:由上節(jié)的學(xué)習(xí)可知,如果想保留一個(gè)數(shù)的某些位,就讓這個(gè)數(shù)和一個(gè)新數(shù)做與運(yùn)算,原數(shù)中想保留的位在新數(shù)中相應(yīng)的位為“1”、其他位在新數(shù)中相應(yīng)的位為“0”。 n【例11-7】基本思路:構(gòu)造一個(gè)新數(shù),最高位“1”,剩下所有位為“0”。因?yàn)橐獜母叩降洼敵稣麛?shù)的各二進(jìn)制位,也就是要保留當(dāng)前數(shù)的最高一位。每次將當(dāng)前的最高位取出(保留),并輸出后再將該數(shù)左移1位,然后將當(dāng)前按最高位保留輸出后,將該數(shù)左移1位,直到所有位輸出為止。1611.4

9、位段n11.4.1 位段基礎(chǔ)知識(shí)n11.4.2 位段的引用1711.4.1 位段基礎(chǔ)知識(shí)n所謂“位段”,又稱為“位域”或“位字段”,是把一個(gè)字節(jié)中的二進(jìn)制位劃分為幾個(gè)不同的區(qū)域,并說明每個(gè)區(qū)域的位數(shù)。每個(gè)域有一個(gè)域名,允許在程序中按域名進(jìn)行操作。這樣就可以把幾個(gè)不同的對象用一個(gè)字節(jié)的二進(jìn)制位域來表示。n位段是一種特殊形式的結(jié)構(gòu)體類型中的成員,它和前面介紹的結(jié)構(gòu)體類型的不同之處是以位為單位來定義結(jié)構(gòu)體成員的長度。n位段定義與結(jié)構(gòu)體定義相仿,其形式為:struct 位段結(jié)構(gòu)名 位域列表 ;n其中位域列表的形式為: 類型說明符 位域名:位域長度; 1811.4.2 位段的引用n位段的引用和結(jié)構(gòu)成員的引用相同,其一般形式為:位段變量名.位段名。例如:data.a,data.bn位段可以賦值,例如:data.a=54;data.b=3;【例11-8】本實(shí)例演示了位段的引用。 1911.5 小結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論