是按2進制代碼的同位進行運算。例如1010和1101這2個2進制數(shù):
新晃網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),新晃網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為新晃數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的新晃做網(wǎng)站的公司定做!
按位與為:
1010
1101
=
1000對應(yīng)為同為1時是1,否則為0.
按位或為:
1010
1101
=
1111只要同位的兩個全為零時得零,否則為1
是將二進制數(shù)按照位的對應(yīng)相與,得到一個新的二進制數(shù)。1與0為0;1與1為1;0與0為0。
分析如下:
就是二進制的每一位相與。
比如:1010 0011 0000 1111,結(jié)果為0000 0011。也就是與上0相當于把那位數(shù)清0,與上1相當于把那位保留。
擴展資料:
1、按位與運算符""是雙目運算符。 其功能是參與運算的兩數(shù)各對應(yīng)的二進位相與。只有對應(yīng)的兩個二進位均為1時,結(jié)果位才為1 ,否則為0。參與運算的數(shù)以補碼方式出現(xiàn)。
例如:95可寫算式如下: 00001001 (9的二進制補碼)00000101 (5的二進制補碼) 00000001 (1的二進制補碼)可見95=1。 按位與運算通常用來對某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a255 運算 ( 255 的二進制數(shù)為11111111)。
參考資料:百度百科:位運算符
位運算符有:(按位與)、|(按位或)、^(按位異或)、~
(按位取反)。
優(yōu)先級從高到低,依次為~、、^、|
按位與運算有兩種典型用法,一是取一個位串信息的某幾位,如以下代碼截取x的最低7位:x
0177。二是讓某變量保留某幾位,其余位置0,如以下代碼讓x只保留最低6位:x
=
x
077。
按位或運算的典型用法是將一個位串信息的某幾位置為1。如將要獲得最右4位為1,其他位與變量j原來其他位保持相同,可用邏輯或運算017|j;
按位異或運算的典型用法是求一個位串信息的某幾位信息的反。如欲求整型變量j的最右4位信息的反,用邏輯異或運算017^j,就能求得j最右4位的信息的反,即原來為1的位,結(jié)果是0,原來為0的位,結(jié)果是1。
交換兩個值,不用臨時變量,假如a=3,b=4。想將a和b的值互換,可以用以下賦值語句實現(xiàn):
a=a^b;
b=b^a;
a=a^b;
取反運算常用來生成與系統(tǒng)實現(xiàn)無關(guān)的常數(shù)。如要將變量x最低6位置成0,其余位不變,可用代碼x
=
x
~077實現(xiàn)。
這里的0177是8進制數(shù),表示成
2進制
后為000
001
111
111,除了低7位是1,其他高位都是0,0和任何數(shù)與()暢丁扳股殖噶幫拴爆莖的結(jié)果都是0!
位運算符
C提供了六種位運算運算符;這些運算符可能只允許整型操作數(shù),即char、short、int和long,無論signed或者unsigned。
按位AND
|
按位OR
^
按位異或
左移
右移
~
求反(一元運算)
按位與操作通常用于掩去某些位,比如
n
=
n
0177;
使得n中除了低7位的各位為0。
按位或操作|用于打開某些位:
x
=
x
|
SET_ON;
使得x的某些SET_ON與相對的位變?yōu)?。
按位異或操作^使得當兩個操作數(shù)的某位不一樣時置該位為1,相同時置0。
應(yīng)該區(qū)分位操作符、|與邏輯操作符、||,后者從左到右的評價一個真值。比如,如果x為1、y為2,那么x
y為0,而x
y為1。
移位運算符和將左側(cè)的操作數(shù)左移或者右移右操作數(shù)給定的數(shù)目,右操作數(shù)必須非負。因此x
2將x的值向左移動兩位,用0填充空位;這相當于乘4。右移一個無符號數(shù)會用0進行填充。右移一個帶符號數(shù)在某些機器上會用符號位進行填充(“算數(shù)移位”)而在其他機器上會用0進行填充(“邏輯移位”)。
單目運算符~對一個整數(shù)求反;即將每一個1的位變?yōu)?,或者相反。比如
x
=
x
~077
將x的后六位置0。注意x
~077的值取決于字長,因此比如如果假設(shè)x是16位數(shù)那么就是x
0177700。這種簡易型式并不會造成額外開銷,因為~077是一個常數(shù)表達式,可以在編譯階段被計算。
作為一個使用位操作的實例,考慮函數(shù)getbits(x,p,n)。它返回以p位置開始的n位x值。我們假設(shè)0位在最右邊,n和p是正數(shù)。例如,getbits(x,4,3)返回右面的4、3、2位。
/*
getbits:
返回從位置p開始的n位
*/
unsigned
getbits(unsigned
x,
int
p,
int
n)
{
return
(x
(p+1-n))
~(~0
n);
}
表達式x
(p+1-n)將需要的域移動到字的右側(cè)。~0是全1;將其左移n為并在最右側(cè)填入0;用~使得最右側(cè)n個1成為掩碼。
授人以魚不如授人以漁。
編譯成功后,按F10一步一步運行,下面會有監(jiān)視窗口,可以隨時查看執(zhí)行到每一步時變量的值。
a =077,表示a=八進制數(shù)077,也就是二進制數(shù)000 111 111,加上符號位就是00000000 00000000 00000000 00111111(int占用4個字節(jié))
b=a3,也就是按位與,
00000000 00000000 00000000 00111111
00000000 00000000 00000000 00000011 =
00000000 00000000 00000000 00000011
也就是說這個時候b = 3
b=7表示b=b7,
00000000 00000000 00000000 00000011
00000000 00000000 00000000 00111111 =
00000000 00000000 00000000 00000011
結(jié)果當然也是3
按位與就是對應(yīng)的位同時為1,那么結(jié)果就為1
文章名稱:c語言按位與函數(shù)僅能使用 C語言按位與
分享網(wǎng)址:http://www.rwnh.cn/article36/hhgipg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標簽優(yōu)化、云服務(wù)器、企業(yè)建站、營銷型網(wǎng)站建設(shè)、電子商務(wù)、品牌網(wǎng)站設(shè)計
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)