版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第17章 位運算操作符在本章的學(xué)習(xí)中,需要掌握以下內(nèi)容:字節(jié)和位的概念;原碼與補碼的轉(zhuǎn)換;6種位操作符及其組成的位運算賦值操作符的使用;各個位操作符的特殊用途;位域的概念和位域的使用。17.1 位運算位運算是指對數(shù)據(jù)的二進(jìn)制位進(jìn)行處理的運算。位運算與數(shù)據(jù)在內(nèi)存中的存儲方式息息相關(guān),因此在介紹位運算操作符之前,有必要先介紹一些操作系統(tǒng)中數(shù)據(jù)存儲和處理的相關(guān)知識。本節(jié)首先介紹字節(jié)與位的概念以及兩者的關(guān)系,再介紹數(shù)據(jù)在內(nèi)存中的儲存方式。17.1.1 字節(jié)與位在前面的介紹中已多次涉及到字節(jié)的概念。操作系統(tǒng)中的各種類型的數(shù)值都由若干個字節(jié)組成,字節(jié)也是數(shù)據(jù)存取和數(shù)值計算的基本單元。從內(nèi)存中讀取數(shù)據(jù)是以字
2、節(jié)為最小單位,向內(nèi)存中寫入數(shù)據(jù)也是以字節(jié)為最小單位。將數(shù)值輸出到文件和從文件獲取數(shù)值時,最小單位也是字節(jié)。17.1.1 字節(jié)與位字節(jié)在操作系統(tǒng)中可以分為更小的單元“位”。大部分系統(tǒng)中,1個字節(jié)由8個位組成,每個位的值為0或1。一個字節(jié)的數(shù)值由其8個位的值決定,如果一個字節(jié)的內(nèi)容為“01101010”。其對應(yīng)的值為:這個字節(jié)的值為8個位組成的二進(jìn)制數(shù)。但是在操作系統(tǒng)中,數(shù)值的存儲并不是直接以其二進(jìn)制值存儲的。17.1.2 補碼在操作系統(tǒng)中,數(shù)值一律用補碼來存儲。一個數(shù)值的二進(jìn)制值可以稱其為原碼,存儲時會將原碼表示為補碼。補碼的最高位為符號位,數(shù)值的補碼表示可以分為以下兩種情況。17.1.2 補碼
3、1非負(fù)數(shù)的補碼非負(fù)數(shù)的補碼與原碼相同。例如,11的原碼為00001011,其補碼也為00001011。注意:為了簡化書寫,討論位運算時,大部分的數(shù)值只用一個字節(jié)表示。 2負(fù)數(shù)的補碼負(fù)數(shù)的補碼的符號位為1,其余位為將該數(shù)絕對值的原碼按位取反后再加1的結(jié)果。例如,-15的補碼:因為是負(fù)數(shù),則符號位為“1”,整個為10001111;其余7位為-15的絕對值的原碼按位取反,即0001111取反后為1110000,再加1為1110001;加上符號位,最后15的補碼是11110001。已知一個數(shù)的補碼,其求原碼的過程與已知原碼求補碼的過程完全一樣:如果補碼的符號位為“0”,表示是一個正數(shù),所以補碼就是該數(shù)
4、的原碼。如果補碼的符號位為“1”,表示是一個負(fù)數(shù),求原碼的操作可以是:符號位為1,其余各位取反加1。使用補碼計算時,可以將符號位和其他位統(tǒng)一處理。17.1.2 補碼例如,7 + 15,其補碼相加如左圖所示。(-7) + (-15),其補碼相加如右圖所示。17.1.2 補碼注意:兩個用補碼表示的數(shù)相加時,如果最高位(符號位)有進(jìn)位,則進(jìn)位被舍棄。減法也可按加法來處理,7 15的計算過程如下圖所示。17.1.2 補碼17.2 位運算操作符C語言共提供了6個位運算操作符,包括取反操作符()、位或操作符(|)、位與操作符(&)、異或操作符()和位移操作符(和)右移操作符的作用是將一個數(shù)的各二進(jìn)制值全部
5、右移若干位。其使用形式如下:數(shù)值1 數(shù)值2;該表達(dá)式將數(shù)值1的二進(jìn)制值右移(數(shù)值2)位,移到右端的低位被舍棄,而高位補入的數(shù)值由符號位決定。如果是無符號數(shù),則高位補入的數(shù)為0。例如:int a = 39;a = a 2; 則變量a將右移兩位,即00100111右移兩位,得到00001001,右端的兩個1被舍棄。如下圖所示。17.2.5 右移操作符()17.2.5 右移操作符()如果是有符號數(shù),則不同的系統(tǒng)有不同的處理方式。有的系統(tǒng)補入0,有的補入符號位。補入0的為“邏輯右移”,補入原符號位的為“算術(shù)右移”。例如,將-15右移兩位,算術(shù)右移后結(jié)果為11111100,邏輯右移結(jié)果為00111100
6、,如下圖所示。17.2.6 左移操作符()左移操作符將一個數(shù)的各個二進(jìn)制位值全部左移若干位。使用形式如下:數(shù)值1 數(shù)值2;該表達(dá)式將數(shù)值1的二進(jìn)制值左移(數(shù)值2)位,移到左端的高位被舍棄,而低位補入的數(shù)值為0。例如:int a = 39;int b = a 1;int c = a 2;int d = a 3; a的值為39,即00100111;b的值為39左移1位的結(jié)果,左端舍去1個0,右端補入1個0,得到01001110;c值為39左移2位的結(jié)果,左端舍去2個0,右端補入2個0,得到10011100;d值為39左移3位的結(jié)果,左端舍去2個0和1個1,右端補入3個0,得到00111000,如下
7、圖所示。17.2.6 左移操作符()17.2.6 左移操作符(= 3;等效于a = a 3;又例如:a &= b;等效于a = a & b范例17-7第20行也可以改寫為:flag = 1;17.3 位運算操作符使用舉例位運算操作符在C語言中的使用十分靈活,通過一些巧妙地算法可以高效地實現(xiàn)一些實用的功能。為了更熟悉位運算操作符的使用,本節(jié)將繼續(xù)討論兩個例子。17.3.1 循環(huán)移位循環(huán)移位是一種重要的移位方式。循環(huán)移位區(qū)別于一般移位的是移位時沒有數(shù)位的丟失。循環(huán)左移時,用從左邊移出的位填充字的右端;而循環(huán)右移時,用從右邊移出的位填充字的左側(cè)。本題暫只討論循環(huán)右移。例如,要將39循環(huán)右移2位,即0
8、0100111右移兩位,移到右端的兩個1不會丟失,將補到左端的2個空缺位置上,如下圖所示。17.3.1 循環(huán)移位例如要對a(無符號數(shù))循環(huán)右移3位,可以采用以下方案:(1)首先把將要移出右端的3個位左移8-3位(假定a占8個位)后保存在b中,此時b形式如下圖第2行所示,其中yyy是a的后3位。(2)將a右移3位,右端3位被舍棄,又由于a為無符號數(shù),左端添加3個0,如下圖第3行所示。(3)最后將a與b位或,由于0和任意值位或補改變該值,因此得到y(tǒng)yyxxxxx,如下圖第4行所示。17.3.2 使用子網(wǎng)掩碼子網(wǎng)掩碼是一個32位地址,用于屏蔽IP地址的一部分以區(qū)別網(wǎng)絡(luò)標(biāo)識和主機標(biāo)識,并說明該IP地址是在局域網(wǎng)上,還是在外部網(wǎng)上。如果一個IP地址與子網(wǎng)掩碼相與的結(jié)果與一個子網(wǎng)地址相同,那么這個IP地址便屬于該子網(wǎng)。有兩個子網(wǎng)地址59.64.200.0和59.64.201.0,兩個IP地址59.64.200.18和59.64.201.20,子網(wǎng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高新企業(yè)培訓(xùn)課件
- 贛南衛(wèi)生健康職業(yè)學(xué)院《建筑設(shè)計基礎(chǔ)一》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛南師范大學(xué)《學(xué)校社會工作》2023-2024學(xué)年第一學(xué)期期末試卷
- 贛東學(xué)院《IP路由與交換技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 《醫(yī)院銷售技巧培訓(xùn)》課件
- 七年級道德與法治上冊第一單元成長的節(jié)拍第三課發(fā)現(xiàn)自己第2框做更好的自己說課稿新人教版
- 三年級科學(xué)上冊第六單元人與大地17砂和黏土教案首師大版
- 科學(xué)課件圖片小學(xué)生
- 三年級下學(xué)期班主任工作參考計劃
- 大數(shù)據(jù)時代會計從業(yè)人員素質(zhì)提升策略分析
- 中餐烹飪實訓(xùn)室安全隱患分析
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 中醫(yī)藥養(yǎng)生保健服務(wù)方案設(shè)計
- 2024年菏澤單州市政工程集團有限公司招聘筆試參考題庫附帶答案詳解
- 肺栓塞指南解讀
- 教育創(chuàng)新智慧課堂賦能學(xué)習(xí)
- 園林綠化員工培訓(xùn)課件
- 數(shù)據(jù)分析控制程序(修改)-y
- 《雷達(dá)對抗原理》課件
- 七年級數(shù)學(xué)(上)有理數(shù)混合運算100題(含答案)
- 《CT檢查技術(shù)》課件-CT圖像后處理
評論
0/150
提交評論