位運算子分析

2021-06-16 14:15:54 字數 1334 閱讀 3254

注意按位運算子|和&與邏輯運算子||和&&完全是兩碼事,別混淆了。

結合律:a&b&c  <=> (a&b)&c <=>  a&(b&c)

交換律:a&b  <=>  b&a

左移和右移

左移運算子「<

右移運算子「>>」是雙目運算子。其功能把「>> 」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。但注意:對於有符號數,當為正數時, 最高位補0 ;而為負數時,符號位為1。

0x1<<2+3的值是多少?

不是7,是32,因為+優先順序高於<

防錯準則:

1.避免位運算子,邏輯運算子和數**算符同時出現在乙個表示式中

2.當位運算子,邏輯運算子和數**算符需要同時參與運算時,盡量使用括號()來表達計算次序

0x01<<2+30;或0x01<<2-3; 

這樣行嗎?不行。乙個整型數長度為32 位,左移32 位發生了什麼事情?溢位!左移-1位呢?反過來移?所以,左移和右移的位數是有講究的。左移和右移的位數不能大於資料 的長度,不能小於0 。

小技巧:

左移n位相當於乘以2的n次方,右移相當於除以2的n次方,效率比數**算符高

3種交換兩個變數程式分析

#define swap1(a,b) \

//最常規,但要借助第三個變數,如果資源裝置受限則不好,但是適用於任何型別的數

#define swap2(a,b) \

//  如果a,b較大,則a+b可能會產生溢位

#define swap3(a,b) \

//不會溢位,效率高,適用於整型

面試題有乙個數列,其中的自然數都是以偶數的形式出現,只有乙個自然數出現的次數為奇數次。編寫程式找出這個自然數。

16 位運算子分析

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 4.4.5 一 位運算子分析 1 c語言中的位運算子 位運算子直接對bit位進行操作,其效率最高。2 左移和右移注意點 左運算元必須為整數型別 char 和 short被隱式轉換為int後...

位運算子,「,」逗號運算子,

位運算子有 按位與 按位或 按位異或 按位取反 優先順序從高到低,依次為 按位與運算有兩種典型用法,一是取乙個位串資訊的某幾位,如以下 擷取x的最低7位 x 0177。二是讓某變數保留某幾位,其餘位置0,如以下 讓x只保留最低6位 x x 077。按位或運算的典型用法是將乙個位串資訊的某幾位置為1。...

運算子之位運算子

右移 負數 無符號右移 或 異或 與 非 說明 位運算子都是作用在二進位製上的 比如 n 50 n 1 結果是多少?100 n 2 結果是多少?200 n 5 結果是多少?1600 為什麼會是這樣的呢?運算的邏輯如下 1,n 50 2,n的二進位制是 0011 0010 3,0011 0010 左移...