全國計(jì)算機(jī)等級考試2C課程第12講位運(yùn)算.ppt
-
資源ID:5210374
資源大小:392.31KB
全文頁數(shù):24頁
- 資源格式: PPT
下載積分:9.9積分
快捷下載
會員登錄下載
微信登錄下載
微信掃一掃登錄
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。
|
全國計(jì)算機(jī)等級考試2C課程第12講位運(yùn)算.ppt
全國計(jì)算機(jī)等級考試3C課程 第十二講位運(yùn)算 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 2 位運(yùn)算的概念 前面我們所學(xué)的各種運(yùn)算 都是以字節(jié)作為基本單位進(jìn)行的 所謂位運(yùn)算 就是以二進(jìn)制位為基本單位進(jìn)行的運(yùn)算 語言提供了6種基本位運(yùn)算符 如下所示 此外 位運(yùn)算符也可以與賦值運(yùn)算符一起組成復(fù)合賦值符 如 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 3 位運(yùn)算的概念 優(yōu)先級 按位取反 優(yōu)先級2位移 優(yōu)先級5位與 優(yōu)先級8位異或 優(yōu)先級9位或 優(yōu)先級10結(jié)合性 按位取反 右結(jié)合性其他左結(jié)合性說明 位運(yùn)算符中除按位非 為單目運(yùn)算符外 其他均為雙目運(yùn)算符 位運(yùn)算的運(yùn)算量只能是整型或字符型的數(shù)據(jù) 不能為實(shí)型數(shù)據(jù) 如果參加位運(yùn)算的運(yùn)算量是負(fù)數(shù) 則首先要將其以補(bǔ)碼形式表示為二進(jìn)制數(shù) 然后再按相應(yīng)規(guī)則進(jìn)行運(yùn)算 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 4 按位非 求反 運(yùn)算 功能 對參與運(yùn)算的數(shù)的各二進(jìn)位按位求反 即將0變1 將1變0 例如 025是對八進(jìn)制數(shù)25 即二進(jìn)制數(shù)00010101 按位求反 計(jì)算方法如下 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 5 按位非 求反 運(yùn)算 例程 includemain inta 3 b 5 c c a 運(yùn)算結(jié)果 c 4 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 6 功能 把 左邊的運(yùn)算數(shù)的各二進(jìn)位全部左移若干位 由 右邊的數(shù)指定移動(dòng)的位數(shù)運(yùn)算規(guī)則低位補(bǔ)0 高位溢出丟棄 例如 左移運(yùn)算 includemain inta 9 a a 1 printf a d n a 運(yùn)算結(jié)果 a 18 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 7 左移運(yùn)算 說明從上面的例子可以看出 在不損失有效數(shù)字的情況下 每左移1位 相當(dāng)于該數(shù)乘以2 左移2位相當(dāng)于該數(shù)乘以2的2次方 4 15 2 結(jié)果為60 即相當(dāng)于15乘以4 但此結(jié)論只適用于該數(shù)左移時(shí)被溢出舍棄的高位中不包含1的情況 例如 表達(dá)式a 4 是指把變量a的各二進(jìn)位向左移動(dòng)4位 如果有語句 a 3 3的二進(jìn)制00000011 則左移4位相當(dāng)于3 2 4 結(jié)果為 00110000 即十進(jìn)制48 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 8 右移運(yùn)算 功能 把 左邊的運(yùn)算數(shù)的各二進(jìn)位全部右移若干位 右邊的數(shù)指定移動(dòng)的位數(shù)說明 對于無符號數(shù) 右移時(shí)高位補(bǔ)零 對于有符號數(shù) 正數(shù)右移時(shí)在高位補(bǔ)0 負(fù)數(shù)右移時(shí)在高位補(bǔ)1 其中左邊補(bǔ)0稱 算術(shù)右移 左邊補(bǔ)1稱 邏輯右移 例如 若a 017 二進(jìn)制形式為00001111 十進(jìn)制為15 a 2運(yùn)算后 舍棄低2位得到00000011 十進(jìn)制為3 若a 5 二進(jìn)制形式為11111011 a 2運(yùn)算后 舍棄低2位得到11111110 十進(jìn)制為 2 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 9 右移運(yùn)算 例程 main unsigneda b printf inputanumber scanf d 運(yùn)行結(jié)果 inputanumber 255 a 255b 7由以上示例可以看出 右移一位相當(dāng)于除以2 右移n位相當(dāng)于除以2n 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 10 小練習(xí) 1 若有以下程序 2009年9月 intr 8 printf d n r 1 輸出結(jié)果是A 16B 8C 4D 2 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 11 按位與運(yùn)算 運(yùn)算規(guī)則 參加運(yùn)算的兩個(gè)數(shù)據(jù) 按二進(jìn)制位進(jìn)行 與 運(yùn)算 如果兩個(gè)相應(yīng)的二進(jìn)制位都為 則該位的結(jié)果值為 否則為 即 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 12 按位與運(yùn)算 按位與的常用功能1 清零若想對一個(gè)存儲單元置零 只要用一個(gè)全 的二進(jìn)制數(shù)與其進(jìn)行 運(yùn)算 即可達(dá)到清零目的 例 若原存儲單元的數(shù)為00101011 若要將其全部置為0 只需將其與二進(jìn)制數(shù)00000000進(jìn)行 運(yùn)算即可 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 13 按位與運(yùn)算 按位與的常用功能2 取一個(gè)數(shù)中的特定位 若想對一個(gè)二進(jìn)制數(shù)的某些位置零 其他位保持不變 只需將找一個(gè)數(shù) 對應(yīng)于要置0的位全部為0 對應(yīng)于要保持不變的位全部為1 然后做按位與運(yùn)算即可 例 有16位的二進(jìn)制數(shù)0010110010101100 要求將高8位全部置0 低8位保持不變 只需將其與二進(jìn)制數(shù)0000000011111111進(jìn)行 運(yùn)算即可 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 14 小練習(xí) 2 有以下程序 2010年3月 includemain inta 2 b 2 c 2 printf d n a b 程序運(yùn)行后的輸出結(jié)果是A 0B 1C 2D 3 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 15 按位異或運(yùn)算 運(yùn)算規(guī)則 當(dāng)兩對應(yīng)的二進(jìn)位相異時(shí) 結(jié)果為1 反之為0 即 0 0 0 0 1 1 1 0 1 1 1 0 例 071 052 023 八進(jìn)制數(shù) 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 16 按位異或運(yùn)算 運(yùn)算符的應(yīng)用 運(yùn)算可以使特定位翻轉(zhuǎn) 設(shè)有01111010 想使其低4位翻轉(zhuǎn) 即1變?yōu)? 0變?yōu)? 可以將它與00001111進(jìn)行 運(yùn)算 即 運(yùn)算結(jié)果 低 位正好是原數(shù)低 位的翻轉(zhuǎn) 可見 要使哪幾位翻轉(zhuǎn)就將與其進(jìn)行 運(yùn)算的該幾位置為 即可 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 17 小練習(xí) 3 變量a中的數(shù)據(jù)用二進(jìn)制表示的形式是01011101 變量b中的數(shù)據(jù)用二進(jìn)制表示的形式是11110000 若要求將a的高4位取反 低4位不變 所要執(zhí)行的運(yùn)算是 2008年4月 A a bB a bC a bD a 4 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 18 按位或運(yùn)算 運(yùn)算規(guī)則 只要對應(yīng)的二個(gè)二進(jìn)位有一個(gè)為1時(shí) 結(jié)果位就為1 即 例如 對于060 017 計(jì)算方法如下 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 19 按位或運(yùn)算 按位或的用途 按位或運(yùn)算常用來對一個(gè)數(shù)據(jù)的某些位定值為 例如 如果想使一個(gè)數(shù) 的低 位改為 只需將 與 1111 進(jìn)行按位或運(yùn)算即可 例 是一個(gè)短整形數(shù)據(jù) 16位 有表達(dá)式 a 0377則將低 位全置為 高 位原樣保留 說明 其中0377是8進(jìn)制數(shù) 其二進(jìn)制是11111111 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 20 按位或運(yùn)算 例程 includemain inta 9 b 5 c c a b printf a d nb d nc d n a b c 運(yùn)算結(jié)果 a 9b 5c 13 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 21 小練習(xí) 4 有以下程序 includemain inta 5 b 1 t t a 2 b printf d n t 程序運(yùn)行后的輸出結(jié)果是A 21B 11C 6D 1 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 22 位運(yùn)算賦值運(yùn)算符 位運(yùn)算符與賦值運(yùn)算符可以組成復(fù)合賦值運(yùn)算符 如 例如 a b 相當(dāng)于a a ba 2 相當(dāng)于a a 2 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 23 不同長度數(shù)據(jù)的位運(yùn)算 注意 如果兩個(gè)數(shù)據(jù)長度不同 例如a為int型 而b為short型 進(jìn)行位運(yùn)算時(shí) 系統(tǒng)會將二者按右端對齊 如果如果b為無符號整型或正數(shù) 則左側(cè)16位補(bǔ)滿0 若b為負(fù)數(shù) 則左側(cè)16位補(bǔ)滿1 2020 1 23 作者 張旭仟版權(quán)所有歡迎盜版 24 Thanklisten