版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第9章底層程序設計運算符含義運算符含義
&按位與~取反
|按位或
<<左移∧按位異或
>>右移(1)位運算符中除~以外,均為二目(元)運算符,即要求兩側各有一個運算量。(2)運算量只能是整型或字符型的數據,不能為實型數據。C語言提供的位運算符有:
說明:位運算和位段結構體類型位運算:
1.“按位與”運算符(&)
按位與是指:參加運算的兩個數據,按二進制位進行“與”運算。如果兩個相應的二進制位都為1,則該位的結果值為1;否則為0。即:0&0=0,0&1=0,1&0=0,1&1=1例:3&5等于?,按位與運算:注意:如果參加&運算的是負數(如-3&-5),則要以補碼形式表示為二進制數,然后再按位進行“與”運算。
00000011(3)&
00000101(5)
00000001(1)
3&5的值得1按位與的用途:
若想對一個存儲單元清零,即使其全部二進制位為0,只要找一個二進制數,其中各個位符合以下條件:原來的數中為1的位,新數中相應位為0。然后使二者進行&運算,即可達到清零目的。(1)清零。
00101011&
10010100
00000000
例:
(2)取一個數中某些指定位。
如有一個整數a(2個字節),想要取其中的低字節,只需將a與8個1按位與即可。0010110010101100abc00000000111111110000000010101100
(3)保留一位的方法:與一個數進行&運算,此數在該位取1。即:a=84,b=59c=a&b=16例:有一數01010100,想把其中左面第3、4、5、7、8位保留下來,運算如下:
01010100(84)&
00111011(59)
00010000(16)
2“按位或”運算符(|)
兩個相應的二進制位中只要有一個為1,該位的結果值為1。即0|0=0,0|1=1,1|0=1,1|1=1例:
060|017,將八進制數60與八進制數17進行按位或運算。
00110000|
00001111
00111111
應用:按位或運算常用來對一個數據的某些位定值為1。例如:如果想使一個數a的低4位改為1,只需將a與017進行按位或運算即可。3“異或”運算符(∧)
異或運算符∧也稱XOR運算符。它的規則是:若參加運算的兩個二進制位同號則結果為0(假)異號則結果為1(真)即:0∧0=0,0∧1=1,1∧0=1,1∧1=0即:071∧052=023(八進制數)
00111001∧
00101010
00010011
例:(1)使特定位翻轉
設有01111010,想使其低4位翻轉,即1變為0,0變為1。可以將它與00001111進行∧運算,即:∧運算符應用:
01111010∧
00001111
01110101
運算結果的低4位正好是原數低4位的翻轉。可見,要使哪幾位翻轉就將與其進行∧運算的該幾位置為1即可。
因為原數中的1與0進行∧運算得1,0∧0得0,故保留原數。例如:012∧00=012(2)與0相∧,保留原值
00001010∧
00000000
00001010(3)交換兩個值,不用臨時變量例如:a=3,b=4。想將a和b的值互換,可以用以下賦值語句實現:a=a∧b;b=b∧a;a=a∧b;
a=011(∧)b=100
a=111(a∧b的結果,a已變成7)(∧)b=100
b=011(b∧a的結果,b已變成3)(∧)a=111
a=100(a∧b的結果,a已變成4)
4“取反”運算符(~)
~是一個單目(元)運算符,用來對一個二進制數按位取反,即將0變1,將1變0。例如,~025是對八進制數25(即二進制數00010101)按位求反。
0000000000010101(~)
1111111111101010(八進制數177752)
5左移運算符(<<)
左移運算符是用來將一個數的各二進制位全部左移若干位。例如:a=<<2
將a的二進制數左移2位,右補0。若a=15,即二進制數00001111,左移2位得00111100,(十進制數60)
高位左移后溢出,舍棄。
5左移運算符(<<)
左移1位相當于該數乘以2,左移2位相當于該數乘以22=4,15<<2=60,即乘了4。但此結論只適用于該數左移時被溢出舍棄的高位中不包含1的情況。假設以一個字節(8位)存一個整數,若a為無符號整型變量,則a=64時,左移一位時溢出的是0,而左移2位時,溢出的高位中包含1。
右移運算符是a>>2表示將a的各二進制位右移2位,移到右端的低位被舍棄,對無符號數,高位補0。例如:a=017時:
a的值用二進制形式表示為00001111,舍棄低2位11:a>>2=00000011
右移一位相當于除以2
右移n位相當于除以2n。6右移運算符(>>)在右移時,需要注意符號位問題:
對無符號數,右移時左邊高位移入0;對于有符號的值,如果原來符號位為0(該數為正),則左邊也是移入0。如果符號位原來為1(即負數),則左邊移入0還是1,要取決于所用的計算機系統。有的系統移入0,有的系統移入1。移入0的稱為“邏輯右移”,即簡單右移;移入1的稱為“算術右移”。
例:
a的值是八進制數113755:
a:1001011111101101(用二進制形式表示)a>>1:0100101111110110(邏輯右移時)a>>1:1100101111110110(算術右移時)
在有些系統中,a>>1得八進制數045766,而在另一些系統上可能得到的是0145766。7位運算賦值運算符
位運算符與賦值運算符可以組成復合賦值運算符。例如:&=,|=,>>=,<<=,∧=例:a&=b相當于a=a&ba<<=2相當于a=a<<2練習:設整型變量a=25(即二進制的00011001),b=7(即二進制的00000111),計算下列各式的值(用十進制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 期貨經理考試考卷及答案呈現
- 前臺年度總結與計劃
- 公益崗考試真題及答案深度解析
- 2026年催乳師考試真題及答案
- 煤礦防水試題及答案
- 市政管網試題及答案
- 2025屆三明市清流縣四年級數學第二學期期中質量跟蹤監視模擬試題含答案解析
- 2026年江西省八年級歷史下冊第九章綜合測試卷
- 2026年福建省人教版小學英語四年級下冊第12單元同步練習題
- 2026年重慶市北師大版高一物理上冊第4章期末測試卷
- 寺院義工培訓課件
- 2026年注冊安全工程師(初級)(安全生產管理實務)試題及答案
- 課件-人才盤點完全應用手冊
- 海洋工程作業安全預案
- 2025-2026學年北師大版(2024)小學數學二年級上冊(全冊)教學設計(表格版)(附目錄P255)
- DB36∕T 1296-2020 城市消防物聯網大數據應用平臺接口規范
- 公建工程交付指南(第三冊)
- 工廠安全生產環保操作規程
- 鉆井隊用電安全培訓
- JG/T 3055-1999基樁動測儀
- 人教版數學九年級上冊第一單元測試卷(附答案)
評論
0/150
提交評論