章C程序設(shè)計(jì) 位運(yùn)算PPT學(xué)習(xí)教案_第1頁
章C程序設(shè)計(jì) 位運(yùn)算PPT學(xué)習(xí)教案_第2頁
章C程序設(shè)計(jì) 位運(yùn)算PPT學(xué)習(xí)教案_第3頁
章C程序設(shè)計(jì) 位運(yùn)算PPT學(xué)習(xí)教案_第4頁
章C程序設(shè)計(jì) 位運(yùn)算PPT學(xué)習(xí)教案_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、會(huì)計(jì)學(xué)1 章程序設(shè)計(jì)章程序設(shè)計(jì) 位運(yùn)算位運(yùn)算 第1頁/共35頁 第2頁/共35頁 運(yùn)算符 含義 運(yùn)算符 含義 按位與 取反 | 按位或 右移 (1)位運(yùn)算符中除以外,均為二目(元)運(yùn)算符, 即要求兩側(cè)各有一個(gè)運(yùn)算量。 (2)運(yùn)算量只能是整型或字符型的數(shù)據(jù),不能為實(shí)型 數(shù)據(jù)。 語言提供的位運(yùn)算符有: 第3頁/共35頁 按位與是指:參加運(yùn)算的兩個(gè)數(shù)據(jù),按二進(jìn)制位進(jìn)行 “與”運(yùn)算。如果兩個(gè)相應(yīng)的二進(jìn)制位都為,則 該位的結(jié)果值為;否則為。即: , 例:例:并不等于,應(yīng)該是按位與運(yùn)算: 注意:注意:如果參加 ba; ab; () (ab的結(jié)果,a已變成) () (ba的結(jié)果,b已變成) () (ab的結(jié)

2、果,a已變成) 第13頁/共35頁 執(zhí)行前兩個(gè)賦值語句:“;”和“ ;”相當(dāng)于b=b(ab)。 再執(zhí)行第三個(gè)賦值語句: 。由于a的 值等于(),b的值等于() ,因此,相當(dāng)于a=,即a的 值等于,等于。 得到原來的值。 即等效于以下兩步: 第14頁/共35頁 是一個(gè)單目(元)運(yùn)算符,用來對一個(gè)二 進(jìn)制數(shù)按位取反,即將變,將變。例如 ,是對八進(jìn)制數(shù)(即二進(jìn)制數(shù) )按位求反。 0000000000010101 () 1111111111101010 (八進(jìn)制數(shù)八進(jìn)制數(shù)177752)177752) 第15頁/共35頁 第16頁/共35頁 第17頁/共35頁 左移運(yùn)算符是用來將一個(gè)數(shù)的各二進(jìn)制 位全部

3、左移若干位。 例如:a=2表示將a的各二進(jìn)制位 右移2位,移到右端的低位被舍棄,對無符號 數(shù),高位補(bǔ)0。 例如: a=017時(shí): a的值用二進(jìn)制形式表示為00001111, 舍棄低2位11: a2=00000011 右移一位相當(dāng)于除以右移一位相當(dāng)于除以2 2 右移右移n n位相當(dāng)于除以位相當(dāng)于除以2n2n。 第20頁/共35頁 在右移時(shí),需要注意符號位問題: 對無符號數(shù),右移時(shí)左邊高位移入0;對 于有符號的值,如果原來符號位為0(該數(shù)為正 ),則左邊也是移入0。如果符號位原來為1(即 負(fù)數(shù)),則左邊移入0還是1,要取決于所用的計(jì) 算機(jī)系統(tǒng)。有的系統(tǒng)移入0,有的系統(tǒng)移入1。 移入0的稱為“邏輯右

4、移”,即簡單右移;移 入1的稱為“算術(shù)右移”。 第21頁/共35頁 例:例: a的值是八進(jìn)制數(shù)113755: a:1001011111101101 (用二進(jìn)制形式表示) a1: 0100101111110110 (邏輯右移時(shí)) a1: 1100101111110110 (算術(shù)右移時(shí)) 在有些系統(tǒng)中,a1得八進(jìn)制數(shù)045766,而在 另一些系統(tǒng)上可能得到的是145766。Turbo C和 其他一些C編譯采用的是算術(shù)右移,即對有符號數(shù) 右移時(shí),如果符號位原來為1,左面移入高位的是 1。 第22頁/共35頁 12.1.7 12.1.7 位運(yùn)算賦值運(yùn)算符位運(yùn)算賦值運(yùn)算符 位運(yùn)算符與賦值運(yùn)算符可以組成復(fù)

5、合賦值運(yùn)算符。 例如: scanf(“%o”, b=a4; c=(04); d=b printf(“%o,%dn%o,%dn”,a,a,d,d); 運(yùn)行情況如下:(輸入) , 217 (的值) , 13 (的值) 輸入的值為八進(jìn)制數(shù)331, 其二進(jìn)制形式為11011001 經(jīng)運(yùn)算最后得到的d為00001101 即八進(jìn)制數(shù),十進(jìn)制數(shù)13。 第26頁/共35頁 例12.2 循環(huán)移位 要求將進(jìn)行右循環(huán)移位 將右循環(huán)移位 ,即將中原來左 面()位 右移位,原來右 端位移到最左面 位。 第27頁/共35頁 將的右端位先放到中的高位中, 實(shí)現(xiàn)語句:(); 將右移位,其左面高位位補(bǔ), 實(shí)現(xiàn)語句:; 將與進(jìn)行

6、按位或運(yùn)算,即|; 步驟: 第28頁/共35頁 程序如下: #include void main() unsigned a,b,c; int n; scanf(“a=%o,n=%d”, b=an; c=c|b; printf(“%on%o”,a,c); 運(yùn)行情況如下: , 3 運(yùn)行開始時(shí)輸入八進(jìn)制數(shù)運(yùn)行開始時(shí)輸入八進(jìn)制數(shù)157653157653, 即二進(jìn)制數(shù)即二進(jìn)制數(shù)11011111101010111101111110101011 循環(huán)右移位后得二進(jìn)制數(shù)循環(huán)右移位后得二進(jìn)制數(shù)01111011111101010111101111110101 即八進(jìn)制數(shù)即八進(jìn)制數(shù)7576575765 第29頁/共

7、35頁 信息的存取一般以字節(jié)為單位。實(shí)際上,有時(shí) 存儲(chǔ)一個(gè)信息不必用一個(gè)或多個(gè)字節(jié),例如,“真 ”或“假”用或表示,只需位即可。在計(jì)算 機(jī)用于過程控制、參數(shù)檢測或數(shù)據(jù)通信領(lǐng)域時(shí),控 制信息往往只占一個(gè)字節(jié)中的一個(gè)或幾個(gè)二進(jìn)制位 ,常常在一個(gè)字節(jié)中放幾個(gè)信息。 第30頁/共35頁 (1)可以人為地將一個(gè)整型變量data分為幾部分。 但是用這種方法給一個(gè)字節(jié)中某幾位賦 值太麻煩??梢晕欢谓Y(jié)構(gòu)體的方法。 怎樣向一個(gè)字節(jié)中的一個(gè)或幾個(gè)二進(jìn)制位賦值和改 變它的值呢?可以用以下兩種方法: (2)位段 C語言允許在一個(gè)結(jié)構(gòu)體中以位為單位來指 定其成員所占內(nèi)存長度,這種以位為單位的 成員稱為“位段”或稱“位域

8、” ( bit field) 。利用位段能夠用較少的位數(shù)存儲(chǔ)數(shù) 據(jù)。 第31頁/共35頁 程序如下: struct packed-data unsigned : ; unsigned: ; unsigned: ; unsigned: ; int ; data; 第32頁/共35頁 (1)位段成員的類型必須指定為unsigned或int類型。 (2) 若某一位段要從另一個(gè)字開始存放,可用以下形 式定義: unsigned :1; unsignedb:;一個(gè)存儲(chǔ)單元 unsigned:; unsigned:;另一存儲(chǔ)單元 a、b、c應(yīng)連續(xù)存放在一個(gè)存儲(chǔ)單元中,由于用了長度為 的位段,其作用是使下一個(gè)位段從下一個(gè)存儲(chǔ)單 元開始存放。因此,只將a、b存儲(chǔ)在一個(gè)存儲(chǔ)單元 中,c另存在下一個(gè)單元(“存儲(chǔ)單元”可能是一 個(gè)字節(jié),也可能是2個(gè)字節(jié),視不同的編譯系統(tǒng) 而異)。 關(guān)于位段的定義和引用的說明: 第33頁/共35頁 (3) 一個(gè)位段必須存儲(chǔ)在同一存儲(chǔ)單元中,不能 跨兩個(gè)單元。如果第一個(gè)單元空間不能容 納下一個(gè)位段,則該空間不用,而從下一

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論