位是用來儲存一組項或條件的yes/no
資訊(有時又稱標誌)的簡潔方法。
位操作符使用整形的運算元。位操作符將其整形運算元視為二進位制位的集合,為每一位提供檢驗好設定的功能。
對於位操作符,由於系統不能確保如何處理其運算元的符號位,所以強烈建議使用unsigned整形運算元。
兩個資料,如果兩個相應的二進位都為1
,則該位的結果為
1,否則為0
作用:(1
)清零、 (2
)取乙個數中某些指定位 (3
)要想將哪一位保留下來,就與乙個數進行
&運算,此數在該位取
1兩個資料,如果兩個相應的二進位中只要有乙個為1
,則該位的結果為
1,否則為0
作用:(1
)如果想使乙個數a的低
4位改為
1,只需將a與
8進製數
017(
00001111
)進行按位或運算即可。
若參加運算的兩個二進位同號,則結果為0
,異號則為1
作用:(1
)使特定位翻轉(要使哪幾位翻轉就將其進行
^運算的該幾位置為
1即可)、 (2
)與0^
,保留原值、 (3
)交換2
個值,不用臨時變數(
a=a^b;b=b^a;a=a^b;
)取反即0
變1,1變0
高位左移後溢位,不起作用,右邊補0
左移n位,相當於該數乘以
移動到右端低位捨棄,高位補0
右移n位,相當於該數除以
步驟:(1
)先使a右移4
位 a>>4 (2
)設定乙個低
4位全為
1,其餘全為
0的數
~(~0<<4)
步驟解析: 0: 0000...000000
~0: 1111...111111
~0<<4: 1111...110000
~(~0<<4): 0000...001111
(3)將上面二者進行&運算
a>>4 & ~(~0<<4)
#include using namespace std;
int _tmain(int argc, _tchar* argv)
執行結果:
分析:在32位的機子上,
int佔
4個位元組,每個位元組是8位。
0x 12 34 56 78
0000 0000 0000 0000 0000 0000 0000 0000
變化後:78 56 34 12
(1)ival>>24 把 ival向右移動24位,捨棄ival後邊的24位,由於乙個
16進製制能表示
4位,這樣就相當於取ival中的12將其放到最低位,即上面
78的位置
(2)(ival>>8) & 0xff00 其中ival>>8是把ival向右移動8位,相當於取ival中的123456,將其放到上面的
345678
位置,再與 0xff00取與運算相當於取123456中的
34,將其放到
56的位置
(3)同理,(ival<<8) & 0xff0000將取ival 中的56,將其放到
34的位置
(ival <
12的位置。
最後在將上面的去或運算:
0x 00 00 00 12
00 00 34 00
00 56 00 00
78 00 00 00
一道簡單的題目
這是校賽的一道題,當時覺得挺難,後來就覺得簡單,知道思路後就很好做了。題目是這樣子的 1008 植樹節b time limit 1 sec memory limit 128 mb submit 4 solved 4 submit status web board description 植樹節那天每...
一道簡單的題目
這是一道leetcode的題目,描述如下 given an unsorted integer array,find the first missing positive integer.for example,given 1,2,0 return 3,and 3,4,1,1 return 2.you...
一道簡單的acm題目
acm協會主席alphard決定在除夕夜辦一場山寨春晚,立即得到廣大acmer的支援。報名的acmer眾多,主席已經開始忙不過來了。幸好有 細心 的angelclover幫忙,把報名參加山寨春晚的節目單按照預演時間進行了歸類。alphard要求春晚不要超過4小時,但為了不打擊廣大acmer的積極性,...