1樓:濱崎步最愛
一、位運算子c語言提供了六種位運算子:
& 按位與
| 按位或
^ 按位異或
~ 取反
<< 左移
>> 右移
用法:1.按位與運算子 &
按位與運算子是雙目運算子,其功能是將參與運算的兩運算元各自對應的二進位制為進行於操作。只有對應的兩個二進位制位均為1 是,結果對應的二進位制位才為 1,否則為0.例如:
表示式「21&18」的計算結果是16(即二進位製數10000),因為:
21用二進位制表示就是:0000 0000 0000 0000 0000 0000 0001 0101
18用二進位制表示就是:0000 0000 0000 0000 0000 0000 0001 0010
按位與所得結果是: 0000 0000 0000 0000 0000 0000 0001 0000(21和18左起第五位都是1,對應出結果 1)
與上述方法類似可得出 | 和^ 的結論,即:
2.按位或運算子「|」是雙目運算子。其功能是將參與運算的兩運算元各自對應的二進位制位進行或操作。
只有對應的兩個二進位制都是0 是,結果對應的二進位制位才是0,否則為1.例如表示式「21|18」的值是23(即二進位製數10111)。
3.按位異或運算子「^」是雙目運算子。其功能是將參與運算的兩運算元各自對應的二進位制為進行異或操作。
只有對應的兩個二進位制位不相同是,結果對應的二進位制唯才是1,否則為0.例如表示式「21^18」的值是7(即二進位製數111).
4.按位非運算子~是單目運算子。其功能是將運算元中的二進位制位0變成1,1變成0.例如,表示式「~21」的值是無符號整型數0xffffffea(十六進位制)。
5. 左移運算 左移運算子「<<」是雙目運算子。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數,
高位丟棄,低位補0。例如: a<<4 指把a的各二進位向左移動4位。如a=00000011(十進位制3),左移4位後為00110000(十進位制48)。
6. 右移運算右移運算子「>>」是雙目運算子。其功能是把「>> 」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。
例如:設 a=15,a>>2 表示把000001111右移為00000011(十進位制3)。應該說明的是,對於有符號數,在右移時,符號位將隨同移動。
當為正數時, 最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。turbo c和很多系統規定為補1。
例子void main()
2樓:匿名使用者
c++位運算子有以下兩類:
1 位邏輯運算子:&(位「與」)、^(位「異或」)、|(位「或」)和~(位「取反」)
2 移位運算子:<<(左移)和》(右移).
位「與」、位「或」和位「異或」運算子都是雙目運算子,其結合性都是從左向右的,優先順序高於邏輯運算子,低於比較運算子,且從高到低依次為&、^、|
c++中位運算
3樓:匿名使用者
位運算得到的結果不是邏輯值,而是按照二進位制位規則的運算結果,注意這裡的運專算符屬是&(位與)而不是&&(邏輯與)
比如1,會當成數值1輸出
1<<2=00000001b<<2=1左移2位(相當於乘以2次2)=00000010b<<1=00000100b=4
1&(1<<
4樓:匿名使用者
&是位與 1&(1<<2)=1&2=10&01=0
C 中關於運算子過載的問題,C 中關於運算子過載的乙個問題
如果沒有自己定義預設建構函式,而你使用了ccomplex s 顯然編譯器是會報錯的。在c 中如果程式設計師沒有編寫任何形式的建構函式,那麼編譯器就會自動合成乙個預設 的建構函式,原型可能是這個樣子 classname 該建構函式用來構造預設物件。而一旦程式設計師自己定義了任何形式的其他建構函式,那麼...
c中邏輯運算子是或的意思,C 中運算子 和 用法
是 或者 的意思 是 並且 的意思 例如真 假 結果是真 假 假 結果是假 就是說只要其中一邊是真.條件就成立 真 假 結果是假 真 真 結果是真 就是說只要其中一邊不成立.條件就是假 有乙個是假的.那麼結果就是假的.所以兩邊都是假那麼結果肯定也是假的.假假為真?這不是異或,樓主不要天真了。那只能說...
這些運算子怎麼用,C語言位運算裡這些怎麼用?
我們都知道,資料在計算機裡是以二進位制形式表示的。在實際問題中,常常 也有一些資料物件的情況比較簡單,只需要乙個或幾個二進位制位就能夠編碼表示。如果在乙個軟體系統中這種資料物件非常多,用乙個基本資料型別表示,對計算機 資源是一種浪費。另一方面,許多系統程式需要對二進位制位表示的資料直接操作,例如許多...