版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第8章位操作程序設(shè)計8.1位運(yùn)算符8.2位域8.3位操作程序設(shè)計綜合舉例8.1位運(yùn)算符6種位運(yùn)算符位與&位或|位異或^位取反~位左移<<位右移>>位運(yùn)算的操作數(shù)為整型(char,short,int,long),運(yùn)算結(jié)果是整型。8.1位運(yùn)算符8.1位運(yùn)算符1.按位與&參與運(yùn)算的兩個值,如果兩個相應(yīng)位都為1,則該位的結(jié)果為1,否則為0。即:0&0=0,0&1=0,1&0=0,1&1=1例如:
8.1位運(yùn)算符1.按位與&用來對操作數(shù)中的若干位置0,或者取操作數(shù)中的若干指定位。例如:charx;(1)將x的第4位和第1位置0,11110110x=x&0xf6;
掩碼0xf6的b3=0,b0=0(2)取x的低4位:x=x&0x0f;掩碼0x0f的b7b6b5b4=0000b3b2b1b0=1111
8.1位運(yùn)算符2.按位或|參與運(yùn)算的兩個值,只要兩個相應(yīng)位中有一個為1,則該位的結(jié)果為1。即:0|0=0,0|1=1,1|0=1,1|1=1例如:
8.1位運(yùn)算符2.按位或|用來把操作數(shù)的某些特定位置1.例如:將int型的變量a的b3、b4位置1:a=a|0x18掩碼:00011000
8.1位運(yùn)算符3
.按位異或^
參與運(yùn)算的兩個值,如果兩個相應(yīng)位不同,則結(jié)果為1,否則為0。
即:0^0=0,1^0=1,0^1=1,1^1=0例如:8.1位運(yùn)算符3.按位異或^使某些特定的位翻轉(zhuǎn)。如果是某位與0異或,結(jié)果是該位的原值;如果是某位與1異或,則結(jié)果與該位原來的值相反。例如:要使11010110的b4、b5翻轉(zhuǎn)將數(shù)與00011000進(jìn)行按位異或運(yùn)算。11010110^00011000
110011108.1位運(yùn)算符4.按位取反~一元運(yùn)算法,對數(shù)據(jù)的每個二進(jìn)制位取反.
即把1變?yōu)?,把0變?yōu)?例如:8.1位運(yùn)算符5.移位<<>>(1)左移運(yùn)算(<<)將一個數(shù)的各個二進(jìn)位全部左移若干位。左移后,低位補(bǔ)0,高位舍棄。一個無符號數(shù),左移一位相當(dāng)于乘以2.(2)右移運(yùn)算(>>)將一個數(shù)的各二進(jìn)制位全部右移若干位。右移后,低位舍棄;高位:若是無符號數(shù),補(bǔ)0;若是有符號數(shù),補(bǔ)“符號位”。一個無符號數(shù),右移一位相當(dāng)于除2取商.
8.1位運(yùn)算符5.移位<<>>某一變量所包含的各二進(jìn)位按指定的方向移動指定的位.例8-1位運(yùn)算的應(yīng)用voidmain(){ unsignedintw1=0x155,w2=0x1c7,w3=0x52; intw4=-128,w5=128; printf("%x%x%x\n",w1&w2,w1|w2,w1^w2); printf("%x%x%x\n",~w1,~w2,~w3); printf("%x%x%x\n",w1^w2,w1&~w2,w1|w2|w3); printf("%x%x\n",w1|w2&w3,w1&w2|w3);printf("%x%x\n",~(~w1&~w2),w1|w2);
printf("%d%d\n",w4>>1,w5<<1);}8.2位域BitField有些信息在存儲時,并不需要占用一個完整的存儲單元,而只需一個或幾個二進(jìn)制位。例如,存放一個開關(guān)量時,只有0和1兩種狀態(tài),只要用一個二進(jìn)位即可。位域:把一個存儲單元中的二進(jìn)制劃分為幾個不同的區(qū)域,并說明每個區(qū)域的位數(shù)。每一個域有一個域名,允許在程序中按域名進(jìn)行操作。8.2位域位域的聲明形式:struct結(jié)構(gòu)體名{
類型1成員1:長度;
類型2成員2:長度;
…
類型n成員3:長度;}位域變量;8.2位域例如:structBitSeg1{
unsignedchara:4;
unsignedcharb:3;unsignedcharc:1;}flags;聲明位域變量flags由三個成員a、b、c組成,a占有4bits,b占有3bits,c占有1bits,整個變量flags分配的存儲單元大小為char類型的存儲單元,大小為1Byte。8.2位域例如:structBitSeg2{unsignedcharf1:1;unsignedcharf2:1;unsignedcharf3:1;unsignedcharf4:3;unsignedcharf5:7;
//從第二個char型的存儲單元分配成員f5};聲明的結(jié)構(gòu)類型structBitSeg2占用的空間大小為2Bytes。其中成員f1、f2、f3、f4占用第一字節(jié),f5占用第二字節(jié)。例8-2位域的應(yīng)用。typedefstruct{unsignedcharf1:1;unsignedcharf2:1;unsignedcharf3:1;unsignedchartype:4;unsignedcharindex:8;}Flags;voidmain(){Flagsflags;flags.f1=1;flags.f2=0;flags.f3=1;flags.type=0x7;flags.index=0x81;printf("%x%x%x%1x%2x\n",flags.f1,flags.f2,flags.f3,flags.type,flags.index);
printf("Thesizeofvariableflagsis%d\n",sizeof(flags));}101781Thesizeofvariableflagsis28.3位操作程序設(shè)計綜合舉例例8-3將一個無符號八位二進(jìn)制數(shù)的低4位與高4位進(jìn)行交換,并以十六進(jìn)制格式輸出原數(shù)和交換后的結(jié)果。#include<stdio.h>voidmain(){ unsignedcharflag1=0x8f; unsignedcharflag2,flag3,flag4; flag2=flag1&0x0f;//屏蔽高4位后,將低4位送給flag2 flag2=flag2<<4;//將低4位移到高4位
flag3=flag1&0xf0;//屏蔽低4位后,將高4位送給flag3flag3>>=4;//將高4位移到低4位
flag4=flag2|flag3; printf("%x\n",flag1); printf("%x\n",flag4);}8ff8例8-4編寫一個帶參數(shù)的宏clearBit(x,n),用于將x的第n位置0,假設(shè)n>=0。#include<stdio.h>//~(0x1<<n)是第n位是1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度模特時尚品牌代言聘用合同-@-15
- 2025年度事業(yè)單位網(wǎng)絡(luò)安全管理員勞動合同范本3篇
- 二零二五年度內(nèi)墻涂料研發(fā)生產(chǎn)與品牌營銷承包合同
- 2025年度智能晾曬系統(tǒng)配套個人木工裝修合同3篇
- 2025年度個人閑置物品轉(zhuǎn)讓合同范本3篇
- 2025年度個人投資理財咨詢服務(wù)合同范本8篇
- 2025年度個人住房貸款質(zhì)押合同標(biāo)準(zhǔn)文本及貸款逾期處理規(guī)定3篇
- 2025年度個人房地產(chǎn)抵押借款合同電子簽名版
- 二零二五年度農(nóng)家樂民宿設(shè)施使用權(quán)轉(zhuǎn)讓合同4篇
- 2025年度個人股權(quán)收購與轉(zhuǎn)讓合同(資產(chǎn)重組版)3篇
- 射頻在疼痛治療中的應(yīng)用
- 和平精英電競賽事
- 四年級數(shù)學(xué)豎式計算100道文檔
- “新零售”模式下生鮮電商的營銷策略研究-以盒馬鮮生為例
- 項(xiàng)痹病辨證施護(hù)
- 職業(yè)安全健康工作總結(jié)(2篇)
- 懷化市數(shù)字經(jīng)濟(jì)產(chǎn)業(yè)發(fā)展概況及未來投資可行性研究報告
- 07FD02 防空地下室電氣設(shè)備安裝
- 教師高中化學(xué)大單元教學(xué)培訓(xùn)心得體會
- 彈簧分離問題經(jīng)典題目
- 部編版高中歷史中外歷史綱要(下)世界史導(dǎo)言課課件
評論
0/150
提交評論