![C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)第10章 位算_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/4fada914-b1c6-47f1-a603-859de82d69b8/4fada914-b1c6-47f1-a603-859de82d69b81.gif)
![C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)第10章 位算_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/4fada914-b1c6-47f1-a603-859de82d69b8/4fada914-b1c6-47f1-a603-859de82d69b82.gif)
![C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)第10章 位算_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/4fada914-b1c6-47f1-a603-859de82d69b8/4fada914-b1c6-47f1-a603-859de82d69b83.gif)
![C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)第10章 位算_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/4fada914-b1c6-47f1-a603-859de82d69b8/4fada914-b1c6-47f1-a603-859de82d69b84.gif)
![C語(yǔ)言數(shù)據(jù)結(jié)構(gòu)第10章 位算_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-11/7/4fada914-b1c6-47f1-a603-859de82d69b8/4fada914-b1c6-47f1-a603-859de82d69b85.gif)
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、位運(yùn)算位運(yùn)算102l掌握基本位運(yùn)算的形式掌握基本位運(yùn)算的形式l掌握位運(yùn)算的一般性計(jì)算方法掌握位運(yùn)算的一般性計(jì)算方法 310.1 幾個(gè)基本概念幾個(gè)基本概念 l【問(wèn)題】我們知道任何信息在計(jì)算機(jī)中都是以【問(wèn)題】我們知道任何信息在計(jì)算機(jī)中都是以二進(jìn)制形式表示,而我們?nèi)粘I钪惺褂玫氖嵌M(jìn)制形式表示,而我們?nèi)粘I钪惺褂玫氖鞘M(jìn)制,由于位運(yùn)算是指進(jìn)行二進(jìn)制位的運(yùn)算,十進(jìn)制,由于位運(yùn)算是指進(jìn)行二進(jìn)制位的運(yùn)算,因此在學(xué)習(xí)位運(yùn)算之前我們有必要了解與回顧因此在學(xué)習(xí)位運(yùn)算之前我們有必要了解與回顧一下計(jì)算機(jī)內(nèi)數(shù)據(jù)組織與存儲(chǔ)形式。一下計(jì)算機(jī)內(nèi)數(shù)據(jù)組織與存儲(chǔ)形式。410.1.1 字節(jié)與位字節(jié)與位 l 字節(jié)字節(jié)(byte
2、)是計(jì)算機(jī)中的存儲(chǔ)單元。一個(gè)字節(jié))是計(jì)算機(jī)中的存儲(chǔ)單元。一個(gè)字節(jié)可以存放一個(gè)英文字母或符號(hào),一個(gè)漢字通常要可以存放一個(gè)英文字母或符號(hào),一個(gè)漢字通常要用兩個(gè)字節(jié)來(lái)存儲(chǔ)。每一個(gè)字節(jié)都有自己的編號(hào),用兩個(gè)字節(jié)來(lái)存儲(chǔ)。每一個(gè)字節(jié)都有自己的編號(hào),叫做叫做“地址地址”。1個(gè)字節(jié)由個(gè)字節(jié)由8個(gè)二進(jìn)制位(位的英個(gè)二進(jìn)制位(位的英文是文是bit)構(gòu)成,每位的取值為)構(gòu)成,每位的取值為0或或1。最右端的那。最右端的那1位稱為位稱為“最低位最低位”,編號(hào)為,編號(hào)為0;最左端的那;最左端的那1位稱位稱為為“最高位最高位”,而且從最低位到最高位順序,依,而且從最低位到最高位順序,依次編號(hào)。次編號(hào)。7 6 5 4 3 2
3、 1 0510.1.1 字節(jié)與位字節(jié)與位l我們把若干字節(jié)組成一個(gè)單元,叫做我們把若干字節(jié)組成一個(gè)單元,叫做“字字”(word)。一個(gè)字可以存放一個(gè)數(shù)據(jù)或指令。)。一個(gè)字可以存放一個(gè)數(shù)據(jù)或指令。至于一個(gè)字由幾個(gè)字節(jié)組成,取決于計(jì)算機(jī)的至于一個(gè)字由幾個(gè)字節(jié)組成,取決于計(jì)算機(jī)的硬件系統(tǒng)。一般由硬件系統(tǒng)。一般由1個(gè)、個(gè)、2個(gè)或個(gè)或4個(gè)字節(jié)組成,個(gè)字節(jié)組成,所對(duì)應(yīng)的計(jì)算機(jī)也被稱為所對(duì)應(yīng)的計(jì)算機(jī)也被稱為“8位機(jī)、位機(jī)、16位機(jī)或位機(jī)或32位機(jī)位機(jī)”。目前微機(jī)以。目前微機(jī)以16位機(jī)或位機(jī)或32位機(jī)為主。位機(jī)為主。在本書中作為原理講述的是在本書中作為原理講述的是8位機(jī)。位機(jī)。610.1.2 原碼原碼 l把最高
4、位留做表示符號(hào),其他把最高位留做表示符號(hào),其他7位表示二進(jìn)制位表示二進(jìn)制數(shù),這種編碼方式叫做數(shù),這種編碼方式叫做原碼原碼。最高位為。最高位為“0”表表示正數(shù),為示正數(shù),為“1”表示負(fù)數(shù)。例如:表示負(fù)數(shù)。例如:l00000011表示表示 +3l10000011表示表示 - 3l顯然,這樣可以表示的數(shù)值范圍在顯然,這樣可以表示的數(shù)值范圍在+127到到-127之之間。間。l這種表示方法有一個(gè)缺陷,數(shù)值這種表示方法有一個(gè)缺陷,數(shù)值0會(huì)出現(xiàn)歧義:會(huì)出現(xiàn)歧義:l00000000表示表示 +0l10000000表示表示 - 0710.1.3 反碼反碼 l對(duì)于正數(shù),反碼與原碼相同。例如:對(duì)于正數(shù),反碼與原碼相
5、同。例如:l00000011表示表示 +3。l 所謂所謂“反碼反碼”是指與是指與“原碼原碼”在表示負(fù)數(shù)時(shí)相在表示負(fù)數(shù)時(shí)相反:符號(hào)位(最高位)為反:符號(hào)位(最高位)為“1”表示負(fù)數(shù)。但其余表示負(fù)數(shù)。但其余位的值相反。例如,位的值相反。例如,11111100表示表示-3。顯然,這。顯然,這樣可以表示的數(shù)值范圍在樣可以表示的數(shù)值范圍在+127到到-127之間。之間。l 這種表示方法仍然有一個(gè)缺陷,數(shù)值這種表示方法仍然有一個(gè)缺陷,數(shù)值0會(huì)出現(xiàn)歧會(huì)出現(xiàn)歧義:義:l00000000表示表示 +0l11111111表示表示 - 0810.1.4 補(bǔ)碼補(bǔ)碼 l對(duì)于對(duì)于正數(shù)正數(shù),補(bǔ)碼與原碼相同。,補(bǔ)碼與原碼相同
6、。l0的補(bǔ)碼為的補(bǔ)碼為00000000。這樣,。這樣,0的表示唯一。的表示唯一。l對(duì)于對(duì)于負(fù)數(shù)負(fù)數(shù),可以從原碼得到補(bǔ)碼。步驟如下:,可以從原碼得到補(bǔ)碼。步驟如下:l符號(hào)位不變符號(hào)位不變,其余各位取反;其余各位取反;l整個(gè)數(shù)加整個(gè)數(shù)加1。l已知補(bǔ)碼,求原碼:已知補(bǔ)碼,求原碼:l符號(hào)位不變符號(hào)位不變,其余各位取反其余各位取反l整個(gè)數(shù)加整個(gè)數(shù)加1。910.1.4 補(bǔ)碼補(bǔ)碼l例如,已知補(bǔ)碼為例如,已知補(bǔ)碼為11111001,求原碼。,求原碼。l符號(hào)位為符號(hào)位為“1”,表示是一個(gè)負(fù)數(shù),所以該位不變,表示是一個(gè)負(fù)數(shù),所以該位不變,仍為仍為“1”;l其余其余7位位1111001取反后為取反后為0000110
7、;再加;再加1,所以,所以是是10000111(-7)。l計(jì)算機(jī)中的數(shù)據(jù)都采用補(bǔ)碼。原因是計(jì)算機(jī)中的數(shù)據(jù)都采用補(bǔ)碼。原因是:l使用補(bǔ)碼,可以將符號(hào)位和其它位統(tǒng)一處理;同時(shí),使用補(bǔ)碼,可以將符號(hào)位和其它位統(tǒng)一處理;同時(shí),減法也可按加法來(lái)處理。如減法也可按加法來(lái)處理。如-3+4可以變成可以變成-3的補(bǔ)碼的補(bǔ)碼與與+4的補(bǔ)碼相加的補(bǔ)碼相加l兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)兩個(gè)用補(bǔ)碼表示的數(shù)相加時(shí),如果最高位(符號(hào)位)有進(jìn)位,則進(jìn)位被舍棄。有進(jìn)位,則進(jìn)位被舍棄。 1010.2 位運(yùn)算符和位運(yùn)算位運(yùn)算符和位運(yùn)算 l位運(yùn)算表位運(yùn)算表1110.2.1 按位取反按位取反 l【運(yùn)算符】【運(yùn)算符】【
8、格式】【格式】x【功能】各位翻轉(zhuǎn),即原來(lái)為【功能】各位翻轉(zhuǎn),即原來(lái)為1的位變成的位變成0,原,原來(lái)為來(lái)為0的位變成的位變成1?!局饕猛尽块g接地構(gòu)造一個(gè)數(shù),以增強(qiáng)程序【主要用途】間接地構(gòu)造一個(gè)數(shù),以增強(qiáng)程序的可移植性。的可移植性?!臼纠咳纭臼纠咳鐇=83,y=x,則,則y=172。83(01010011) 83(01010011) 172(10101100) 1210.2.2 按位與按位與 【運(yùn)算符】【運(yùn)算符】&【格式】【格式】x&y【功能】當(dāng)兩個(gè)操作對(duì)象二進(jìn)制數(shù)的相同位都為【功能】當(dāng)兩個(gè)操作對(duì)象二進(jìn)制數(shù)的相同位都為1時(shí),時(shí),結(jié)果數(shù)值的相應(yīng)位為結(jié)果數(shù)值的相應(yīng)位為1,否則為相
9、應(yīng)位是,否則為相應(yīng)位是0?!局饕猛尽咳 局饕猛尽咳?或保留或保留)1個(gè)數(shù)的某個(gè)數(shù)的某(些些)位,其余各位置位,其余各位置0。【示例】如【示例】如x=146,y=222,z=x&y,則,則z=146。1310.2.3 按位或按位或 【運(yùn)算符】【運(yùn)算符】|【格式】【格式】x | y【功能】當(dāng)兩個(gè)操作對(duì)象二進(jìn)制數(shù)的相同位都為【功能】當(dāng)兩個(gè)操作對(duì)象二進(jìn)制數(shù)的相同位都為0時(shí),時(shí),結(jié)果數(shù)值的相應(yīng)位為結(jié)果數(shù)值的相應(yīng)位為0,否則為相應(yīng)位是,否則為相應(yīng)位是1?!局饕猛尽繉ⅰ局饕猛尽繉?個(gè)數(shù)的某個(gè)數(shù)的某(些些)位置位置1,其余各位不變。,其余各位不變?!臼纠咳纭臼纠咳鐇=146,y=222,z
10、=x | y,則,則z=222。1410.2.4 按位異或按位異或 【運(yùn)算符】【運(yùn)算符】【格式】【格式】x y【功能】當(dāng)兩個(gè)操作對(duì)象二進(jìn)制數(shù)的相同位的值相同時(shí),【功能】當(dāng)兩個(gè)操作對(duì)象二進(jìn)制數(shù)的相同位的值相同時(shí),結(jié)果數(shù)值的相應(yīng)位為結(jié)果數(shù)值的相應(yīng)位為0,否則為相應(yīng)位是,否則為相應(yīng)位是1。【主要用途】使【主要用途】使1個(gè)數(shù)的某個(gè)數(shù)的某(些些)位翻轉(zhuǎn)位翻轉(zhuǎn)(即原來(lái)為即原來(lái)為1的位變的位變?yōu)闉?,為,為0的變?yōu)榈淖優(yōu)?),其余各位不變。,其余各位不變?!臼纠咳纭臼纠咳鐇=146,y=222,z=x y,則,則z=76 1510.2.5 左位移左位移 【運(yùn)算符】【運(yùn)算符】 【格式】【格式】x要位移的位
11、數(shù)要位移的位數(shù)【功能】把操作對(duì)象的二進(jìn)制數(shù)向左移動(dòng)指定【功能】把操作對(duì)象的二進(jìn)制數(shù)向左移動(dòng)指定的位,并在右面補(bǔ)上相應(yīng)的的位,并在右面補(bǔ)上相應(yīng)的0,高位溢出。,高位溢出。【示例】如【示例】如x=01010011,y=x 【格式】【格式】x要位移的位數(shù)要位移的位數(shù)【功能】把操作對(duì)象的二進(jìn)制數(shù)向右移動(dòng)指定的位【功能】把操作對(duì)象的二進(jìn)制數(shù)向右移動(dòng)指定的位,移出的低位舍棄;高位:,移出的低位舍棄;高位:(1) 對(duì)無(wú)符號(hào)數(shù)和有符號(hào)中的正數(shù),補(bǔ)對(duì)無(wú)符號(hào)數(shù)和有符號(hào)中的正數(shù),補(bǔ)0;(2) 有符號(hào)數(shù)中的負(fù)數(shù),取決于所使用的系統(tǒng):補(bǔ)有符號(hào)數(shù)中的負(fù)數(shù),取決于所使用的系統(tǒng):補(bǔ)0的稱為的稱為“邏輯右移邏輯右移”,補(bǔ),補(bǔ)1
12、的稱為的稱為“算術(shù)右移算術(shù)右移”?!臼纠咳纭臼纠咳鐇=01010011,y=x2,則則y=00010100【注意】右移會(huì)引起數(shù)據(jù)的變化,具體說(shuō),右移一【注意】右移會(huì)引起數(shù)據(jù)的變化,具體說(shuō),右移一位相當(dāng)于對(duì)原來(lái)的數(shù)值除以位相當(dāng)于對(duì)原來(lái)的數(shù)值除以2。右移。右移n位相當(dāng)于對(duì)原位相當(dāng)于對(duì)原來(lái)的數(shù)值除以來(lái)的數(shù)值除以2 n17說(shuō) 明lx、y和和“位數(shù)位數(shù)”等操作數(shù),都只能是整型或字符型數(shù)據(jù)。等操作數(shù),都只能是整型或字符型數(shù)據(jù)。除按位取反為單目運(yùn)算符外,其余均為雙目運(yùn)算符。除按位取反為單目運(yùn)算符外,其余均為雙目運(yùn)算符。l參與運(yùn)算時(shí),操作數(shù)參與運(yùn)算時(shí),操作數(shù)x和和y都必須首先轉(zhuǎn)換成二進(jìn)制形式,都必須首先轉(zhuǎn)
13、換成二進(jìn)制形式,然后再執(zhí)行相應(yīng)的按位運(yùn)算。例如:然后再執(zhí)行相應(yīng)的按位運(yùn)算。例如:l5220即即10125即即101001000101 。l 復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符l除按位取反運(yùn)算外除按位取反運(yùn)算外,其余其余5個(gè)位運(yùn)算符均可與賦值運(yùn)算符一個(gè)位運(yùn)算符均可與賦值運(yùn)算符一起起,構(gòu)成復(fù)合賦值運(yùn)算符構(gòu)成復(fù)合賦值運(yùn)算符: &=、|+、=、=。例如,。例如,a & = b相當(dāng)于相當(dāng)于 a = a & b。a =2相當(dāng)于:相當(dāng)于:a = a 2。l不同長(zhǎng)度數(shù)據(jù)間的位運(yùn)算不同長(zhǎng)度數(shù)據(jù)間的位運(yùn)算低字節(jié)對(duì)齊,短數(shù)的高字節(jié)按低字節(jié)對(duì)齊,短數(shù)的高字節(jié)按最高位補(bǔ)位:最高位補(bǔ)位:l對(duì)無(wú)符號(hào)數(shù)和有
14、符號(hào)中的正數(shù),補(bǔ)對(duì)無(wú)符號(hào)數(shù)和有符號(hào)中的正數(shù),補(bǔ)0;l有符號(hào)數(shù)中的負(fù)數(shù),補(bǔ)有符號(hào)數(shù)中的負(fù)數(shù),補(bǔ)1。 1810.3 程序舉例程序舉例 l【例【例10-1】取一個(gè)整數(shù)】取一個(gè)整數(shù)a從右端開(kāi)始的從右端開(kāi)始的47位。位。 #include void main()unsigned a,b,c,d; scanf(%o,&a); b=a4;c=(04); d=b&c; printf(%o,%dn%o, %dn,a,a,d,d);19【例【例10-2】從鍵盤上輸入一個(gè)正整數(shù)】從鍵盤上輸入一個(gè)正整數(shù)給給int變量變量num,按二進(jìn)制位輸出該數(shù)。,按二進(jìn)制位輸出該數(shù)。 #include “stdio
15、.h“void main() int num, mask, i; printf(”input a integer number:”); scanf(“%d”,&num); mask = 115; printf(“%d=” , num); for(i=1; i=16; i+) putchar(num&mask ? 1: 0); num = 1; if( i%4=0 ) putchar(,); printf(bbn);20l本章介紹的位運(yùn)算在系統(tǒng)軟件開(kāi)發(fā)與計(jì)算機(jī)用于檢測(cè)本章介紹的位運(yùn)算在系統(tǒng)軟件開(kāi)發(fā)與計(jì)算機(jī)用于檢測(cè)和控制領(lǐng)域中有重要應(yīng)用,也是和控制領(lǐng)域中有重要應(yīng)用,也是c語(yǔ)言的特色
16、之一。語(yǔ)言的特色之一。重點(diǎn)要求讀者掌握位運(yùn)算符及其應(yīng)用。重點(diǎn)要求讀者掌握位運(yùn)算符及其應(yīng)用。l學(xué)好本章必須了解計(jì)算機(jī)內(nèi)數(shù)據(jù)的組織與存儲(chǔ)形式,學(xué)好本章必須了解計(jì)算機(jī)內(nèi)數(shù)據(jù)的組織與存儲(chǔ)形式,二進(jìn)制的原理是關(guān)鍵。二進(jìn)制的原理是關(guān)鍵。l本章介紹的位運(yùn)算包括按位與(本章介紹的位運(yùn)算包括按位與(&)、按位或()、按位或(|)、)、按位異或(按位異或()、按位取反()、按位取反()、左移()、左移(),實(shí)質(zhì)上都是),實(shí)質(zhì)上都是1和和0的變換或者移動(dòng),學(xué)好的變換或者移動(dòng),學(xué)好本章對(duì)今后計(jì)算機(jī)系統(tǒng)的編程很有好處。本章對(duì)今后計(jì)算機(jī)系統(tǒng)的編程很有好處。 21l編寫一個(gè)函數(shù)編寫一個(gè)函數(shù)getbits,從一個(gè),從一個(gè)16位的單元中取出某位的單元中取出某幾位(即該幾位保留原值,其余位為幾位(即該幾位保留原值,其余位為0)。函數(shù)調(diào)用)。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電動(dòng)橋式圓角擋閘項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)潔凈吹淋傳遞窗行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025至2031年中國(guó)朱雀系列外墻磚行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年插件式鋁基板項(xiàng)目可行性研究報(bào)告
- 2025年定柱懸臂起重機(jī)項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)保爾塑像行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年光速測(cè)定儀項(xiàng)目可行性研究報(bào)告
- 2025年萬(wàn)向臉盆去水器項(xiàng)目可行性研究報(bào)告
- 廣州廣東廣州市海珠區(qū)濱江街道市容環(huán)境衛(wèi)生監(jiān)督檢查所招聘環(huán)衛(wèi)工人筆試歷年參考題庫(kù)附帶答案詳解
- 2025至2030年軸承件防銹油項(xiàng)目投資價(jià)值分析報(bào)告
- 2023-2024學(xué)年九年級(jí)三調(diào)語(yǔ)文試卷(含答案)
- 醫(yī)學(xué)教程 常見(jiàn)急腹癥的超聲診斷課件
- DB11T 1481-2024生產(chǎn)經(jīng)營(yíng)單位生產(chǎn)安全事故應(yīng)急預(yù)案評(píng)審規(guī)范
- 《氓》教學(xué)設(shè)計(jì) 2023-2024學(xué)年統(tǒng)編版高中語(yǔ)文選擇性必修下冊(cè)
- 《網(wǎng)店運(yùn)營(yíng)與管理》第3版 課件全套 白東蕊 第1-11章 網(wǎng)上開(kāi)店概述- 移動(dòng)網(wǎng)店運(yùn)營(yíng)
- 2024年全國(guó)國(guó)家電網(wǎng)招聘之電網(wǎng)計(jì)算機(jī)考試歷年考試題(附答案)
- 化學(xué)元素周期表注音版
- 藥物過(guò)敏性休克
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術(shù)規(guī)范
- 2024福建省廈門市總工會(huì)擬錄用人員筆試歷年典型考題及考點(diǎn)剖析附答案帶詳解
- 四川省康定市大槽門金礦資源儲(chǔ)量核實(shí)報(bào)告
評(píng)論
0/150
提交評(píng)論