第八章位運(yùn)算_第1頁(yè)
第八章位運(yùn)算_第2頁(yè)
第八章位運(yùn)算_第3頁(yè)
第八章位運(yùn)算_第4頁(yè)
第八章位運(yùn)算_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算第八章第八章 位位 運(yùn)運(yùn) 算算HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算8.1 8.1 位運(yùn)算基本概念位運(yùn)算基本概念l 數(shù)據(jù)在計(jì)算機(jī)中是用二進(jìn)制表示的;數(shù)據(jù)在計(jì)算機(jī)中是用二進(jìn)制表示的;l 數(shù)據(jù)運(yùn)算對(duì)數(shù)據(jù)類(lèi)型整體進(jìn)行;數(shù)據(jù)運(yùn)算對(duì)數(shù)據(jù)類(lèi)型整體進(jìn)行; 位運(yùn)算的概念位運(yùn)算的概念位運(yùn)算是對(duì)數(shù)據(jù)的每一個(gè)二進(jìn)制位進(jìn)行的運(yùn)算。位運(yùn)算是對(duì)數(shù)據(jù)的每一個(gè)二進(jìn)制位進(jìn)行的運(yùn)算。位運(yùn)算的對(duì)象:位運(yùn)算的對(duì)象:l 整型整型l 字符型字符型HFUT School of Compu

2、ter Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算計(jì)算機(jī)中的數(shù)據(jù)表示計(jì)算機(jī)中的數(shù)據(jù)表示無(wú)符號(hào)整型無(wú)符號(hào)整型 unsigned ( char short int long) 無(wú)符號(hào)數(shù)只表示正數(shù)和無(wú)符號(hào)數(shù)只表示正數(shù)和0,其中的所有的二進(jìn)制為都表示數(shù)值。,其中的所有的二進(jìn)制為都表示數(shù)值。如如 unsigned short 表表 示示 范范 圍圍 :0 65535 二進(jìn)制機(jī)器數(shù):二進(jìn)制機(jī)器數(shù):0000000000000000111111111111111#include void main(void)unsigned short a;a = 0 xffff;printf(%un,a);HFUT

3、School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算有符號(hào)整數(shù)有符號(hào)整數(shù) char short int long 有符號(hào)數(shù)需要表示正數(shù)負(fù)數(shù)和零,必須采用編碼的方式,將符有符號(hào)數(shù)需要表示正數(shù)負(fù)數(shù)和零,必須采用編碼的方式,將符號(hào)轉(zhuǎn)化為二進(jìn)制。編碼的方法有原碼、補(bǔ)碼、反碼。號(hào)轉(zhuǎn)化為二進(jìn)制。編碼的方法有原碼、補(bǔ)碼、反碼。 整型數(shù)據(jù)主要使用的補(bǔ)碼。整型數(shù)據(jù)主要使用的補(bǔ)碼。 計(jì)算機(jī)系統(tǒng)用有限的二進(jìn)制位表示數(shù)據(jù),是典型的有模計(jì)數(shù)系計(jì)算機(jī)系統(tǒng)用有限的二進(jìn)制位表示數(shù)據(jù),是典型的有模計(jì)數(shù)系統(tǒng)。有模計(jì)數(shù)系統(tǒng)當(dāng)計(jì)數(shù)值超過(guò)系統(tǒng)的統(tǒng)。有模計(jì)數(shù)系統(tǒng)當(dāng)計(jì)數(shù)值超過(guò)系統(tǒng)的“模?!睍r(shí)系統(tǒng)重新開(kāi)始計(jì)

4、數(shù)。時(shí)系統(tǒng)重新開(kāi)始計(jì)數(shù)。有模計(jì)數(shù)系統(tǒng)有如下性質(zhì):有模計(jì)數(shù)系統(tǒng)有如下性質(zhì):如:時(shí)鐘從如:時(shí)鐘從9點(diǎn)調(diào)整到點(diǎn)調(diào)整到6點(diǎn)有兩種方法:點(diǎn)有兩種方法:9- -3=69+9=12+6 12位計(jì)數(shù)系統(tǒng)的模,位計(jì)數(shù)系統(tǒng)的模,3,9互為補(bǔ)數(shù)。互為補(bǔ)數(shù)。 有模計(jì)數(shù)系統(tǒng)可以將有模計(jì)數(shù)系統(tǒng)可以將減減一個(gè)數(shù)轉(zhuǎn)化成一個(gè)數(shù)轉(zhuǎn)化成加加該數(shù)的補(bǔ)數(shù)。也就是可該數(shù)的補(bǔ)數(shù)。也就是可以將減法運(yùn)算轉(zhuǎn)化成加法運(yùn)算。以將減法運(yùn)算轉(zhuǎn)化成加法運(yùn)算。合肥工業(yè)大學(xué)計(jì)算機(jī)基礎(chǔ)教育教研室第2章 計(jì)算機(jī)中的信息表示補(bǔ)碼的編碼規(guī)則和性質(zhì)補(bǔ)碼的編碼規(guī)則和性質(zhì)計(jì)數(shù)系統(tǒng)的模計(jì)數(shù)系統(tǒng)的模如果用八位二進(jìn)制表示一個(gè)數(shù),系統(tǒng)的模是如果用八位二進(jìn)制表示一個(gè)數(shù),系統(tǒng)的模是2

5、8。100000000=00000000計(jì)數(shù)范圍計(jì)數(shù)范圍整數(shù)編碼規(guī)則:整數(shù)編碼規(guī)則:X補(bǔ)補(bǔ)=2n + X補(bǔ)碼的求法:補(bǔ)碼的求法:正數(shù):正數(shù):保持原值,前面補(bǔ)保持原值,前面補(bǔ)0;負(fù)數(shù):負(fù)數(shù):各位取反,最后一位各位取反,最后一位+1。如:如:-2的補(bǔ)碼(的補(bǔ)碼(8bit)-0000001011111101+0000000111111110合肥工業(yè)大學(xué)計(jì)算機(jī)基礎(chǔ)教育教研室第2章 計(jì)算機(jī)中的信息表示補(bǔ)碼的性質(zhì)補(bǔ)碼的性質(zhì) 0在補(bǔ)碼系統(tǒng)中唯一。在補(bǔ)碼系統(tǒng)中唯一。 X+Y補(bǔ)補(bǔ)=X補(bǔ)補(bǔ)+Y補(bǔ)補(bǔ) X-Y補(bǔ)補(bǔ)=X補(bǔ)補(bǔ)- Y補(bǔ)補(bǔ)=X補(bǔ)補(bǔ)+-Y補(bǔ)補(bǔ) 性質(zhì)性質(zhì)說(shuō)明補(bǔ)碼系統(tǒng)有一個(gè)優(yōu)點(diǎn),在不超出數(shù)據(jù)表示范圍的情說(shuō)明補(bǔ)碼系統(tǒng)

6、有一個(gè)優(yōu)點(diǎn),在不超出數(shù)據(jù)表示范圍的情況下,可以將減法運(yùn)算轉(zhuǎn)化成加法運(yùn)算。況下,可以將減法運(yùn)算轉(zhuǎn)化成加法運(yùn)算。如:如:X=+0001010B,Y=0000101BX-Y? 根據(jù)補(bǔ)碼的性質(zhì):根據(jù)補(bǔ)碼的性質(zhì): X-Y補(bǔ)補(bǔ)=X補(bǔ)補(bǔ)- Y補(bǔ)補(bǔ)=X補(bǔ)補(bǔ)+-Y補(bǔ)補(bǔ)X補(bǔ)補(bǔ)=00001010, -Y補(bǔ)補(bǔ)=11111011 00001010+ 1111101110000010100000101HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算8.2 位邏輯運(yùn)算位邏輯運(yùn)算 位邏輯運(yùn)算符位邏輯運(yùn)算符運(yùn)算符運(yùn)算規(guī)則示例按位取反b&按位與3 & 7|按位或s | 0 x00f

7、f按位異或x(y+5) 說(shuō)明:說(shuō)明: 運(yùn)算對(duì)象必須是整型或字符型;運(yùn)算對(duì)象必須是整型或字符型; 為單目運(yùn)算;為單目運(yùn)算; 運(yùn)算按對(duì)應(yīng)位,逐位進(jìn)行。運(yùn)算按對(duì)應(yīng)位,逐位進(jìn)行。HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算按位取反按位取反 將數(shù)據(jù)對(duì)象中的每位二進(jìn)制取反(將數(shù)據(jù)對(duì)象中的每位二進(jìn)制取反(0變成變成1,1變成變成0) 。 如:如: 0 1 0 1 0 1 0 1 按位取反后為:按位取反后為: 1 0 1 0 1 0 1 0 如一個(gè)十字路口有一組紅綠燈,控制由一個(gè)字節(jié)性變量的低如一個(gè)十字路口有一組紅綠燈,控制由一個(gè)字節(jié)性變量的低2位完成。位完

8、成。b0為紅燈、為紅燈、b1為綠燈。假如函數(shù)為綠燈。假如函數(shù)delay1s(int n);為已延時(shí)為已延時(shí)1s函數(shù)。程序設(shè)計(jì)實(shí)現(xiàn)紅綠燈控制。函數(shù)。程序設(shè)計(jì)實(shí)現(xiàn)紅綠燈控制。unsigned char chSignalCtr = 0 x01;while(1) delay1s(30);chSignalCtr = chSignalCtr;delay1s(50);chSignalCtr = chSignalCtr;HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算位與運(yùn)算位與運(yùn)算 & &真值表b1b2b1&b2000010100111 作用:將某些位清零,其

9、余保持不變。作用:將某些位清零,其余保持不變。 unsigned short a;scanf(%x,&a);a = a & 0 xfff0;printf(%xn,a); 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算位或運(yùn)算位或運(yùn)算 | |真值表b1b2b1|b2000011101111 作用:將某些位置作用:將某些位置1,其余保持不變。,其余保持不變。 u

10、nsigned short a;scanf(%x,&a);a = a | 0 xf000;printf(%xn,a); 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1 0HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算位異或運(yùn)算位異或運(yùn)算 真值表b1b2b1b2000011101110 作用:將某些位作用:將某些位 取反,其余保持不變。取反,其余保持不變。 unsigned short a;scanf(%x,

11、&a);a = a 0 x5555; /偶數(shù)位取反偶數(shù)位取反printf(%xn,a); 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 1HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算位邏輯運(yùn)算賦值位邏輯運(yùn)算賦值運(yùn)算符示例運(yùn)算規(guī)則&=a &= 7a = a &7|=s | = 0 x00ffs = s | 0 x00ff=x = (y+5)x = x (y+5) 說(shuō)明:說(shuō)明: 運(yùn)算對(duì)象必須是整型或字符型;

12、運(yùn)算對(duì)象必須是整型或字符型; 左值只能是變量;左值只能是變量; 運(yùn)算取賦值優(yōu)先級(jí)。運(yùn)算取賦值優(yōu)先級(jí)。HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算8.2 移位運(yùn)算移位運(yùn)算 移位運(yùn)算符移位運(yùn)算符運(yùn)算符運(yùn)算符運(yùn)算規(guī)則運(yùn)算規(guī)則示例示例左移b 右移s (n+3) 說(shuō)明:說(shuō)明: 運(yùn)算對(duì)象必須是整型或字符型;運(yùn)算對(duì)象必須是整型或字符型; 整體二進(jìn)制位移動(dòng)。整體二進(jìn)制位移動(dòng)。HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算左移左移 操作:將操作:將a中的二進(jìn)制位,左移中的二進(jìn)制位,左移n(無(wú)符號(hào)整數(shù)),高位移出

13、(無(wú)符號(hào)整數(shù)),高位移出低位補(bǔ)低位補(bǔ)0。 unsigned short a;a = 2;a = a 4; 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 格式:格式: a 操作:操作: 無(wú)符號(hào)數(shù)稱(chēng)為邏輯右移,低位移出,高位補(bǔ)無(wú)符號(hào)數(shù)稱(chēng)為邏輯右移,低位移出,高位補(bǔ)0; 有符號(hào)數(shù)稱(chēng)為算數(shù)右移,低位移出,符號(hào)位自補(bǔ)。有符號(hào)數(shù)稱(chēng)為算數(shù)右移,低位移出,符號(hào)位自補(bǔ)。 格式:格式: a n 右移一位相當(dāng)于除右移一位相當(dāng)于除 2。 例:通過(guò)移位實(shí)現(xiàn)循環(huán)移位例:通過(guò)移位實(shí)現(xiàn)循環(huán)移位HFUT School of Computer Xu

14、an & li第八章第八章 位位 運(yùn)運(yùn) 算算移位運(yùn)算賦值移位運(yùn)算賦值運(yùn)算符示例運(yùn)算規(guī)則=a = 7a = a =s = (n+3)s = s (n + 3) 說(shuō)明:說(shuō)明: 運(yùn)算對(duì)象必須是整型或字符型;運(yùn)算對(duì)象必須是整型或字符型; 左值只能是變量;左值只能是變量; 運(yùn)算取賦值優(yōu)先級(jí)。運(yùn)算取賦值優(yōu)先級(jí)。HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算優(yōu)優(yōu)先先級(jí)級(jí)總總表表級(jí)別級(jí)別運(yùn)算符運(yùn)算符結(jié)合順序結(jié)合順序1()() - .從左向右從左向右2!- - + - - (type) sizeof* * & 從右向左從右向左3* * / %從左向右從左向右4+

15、 - -從左向右從左向右5(移位運(yùn)算移位運(yùn)算)從左向右從左向右6 = 從左向右從左向右7= != 從左向右從左向右8&(位與運(yùn)算位與運(yùn)算)從左向右從左向右9(位異或運(yùn)算位異或運(yùn)算)從左向右從左向右10|(位或運(yùn)算位或運(yùn)算)從左向右從左向右11&從左向右從左向右12| |從左向右從左向右13? :從右向左從右向左14= op =從右向左從右向左15,從左向右從左向右HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算8.4 位段(位域)位段(位域) 位段(位域)的基本概念位段(位域)的基本概念 以前所有運(yùn)算的以前所有運(yùn)算的操作的對(duì)象都是一個(gè)完整的數(shù)據(jù),

16、甚至是幾個(gè)操作的對(duì)象都是一個(gè)完整的數(shù)據(jù),甚至是幾個(gè)數(shù)據(jù)的組合。數(shù)據(jù)的組合。應(yīng)用中可能只需要使用一位或幾位二進(jìn)制,也只能使應(yīng)用中可能只需要使用一位或幾位二進(jìn)制,也只能使用一個(gè)變量,比如查找標(biāo)志用一個(gè)變量,比如查找標(biāo)志 int iFlag ; 其實(shí)其實(shí)bit就可以。就可以。 位段是將一個(gè)位段是將一個(gè)抽象數(shù)據(jù)抽象數(shù)據(jù)中的不同的二進(jìn)制位劃分為幾個(gè)不同的中的不同的二進(jìn)制位劃分為幾個(gè)不同的區(qū)域,區(qū)域,每個(gè)區(qū)域每個(gè)區(qū)域看作不同的數(shù)據(jù),代表不同的意義。通常用在控制看作不同的數(shù)據(jù),代表不同的意義。通常用在控制領(lǐng)域領(lǐng)域及嵌入式系統(tǒng)編程及嵌入式系統(tǒng)編程。HFUT School of Computer Xuan &

17、li第八章第八章 位位 運(yùn)運(yùn) 算算位段(位域)的定義位段(位域)的定義 格式:格式: struct 位段類(lèi)型位段類(lèi)型 type 位段名位段名1: 長(zhǎng)度長(zhǎng)度1; type 位段名位段名2: 長(zhǎng)度長(zhǎng)度2; type 位段名位段名n: 長(zhǎng)度長(zhǎng)度n; ;struct bitfield1 unsigned int a:4 ; /* 占占4位位 */ unsigned int b:4 ; /* 占占4位位 */ unsigned int c:2 ; /* 占占2位位 */HFUT School of Computer Xuan & li第八章第八章 位位 運(yùn)運(yùn) 算算位段(位域)的使用位段(位域)的使用struct bitfield1 unsigned int a:4 ; /* 占占4位位 */ unsigned int b:4 ; /* 占占4位位 */ unsigned in

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論