本人第乙個部落格,以後會經常寫(此時的我就像戲台上的老將軍),以免第二次犯同樣的錯誤。因為考研的原因,好久沒有coding了,略感生疏。瘋玩了十幾天,決定拿起書本,紮實地重新看一遍專業書。
從開始學習程式設計起,就不是很注重位運算,因為覺得可以用別的方法代替。後來發現有些東西用位運算處理更有效率。這裡主要寫以下幾個位運算子:
按位取反
左移右移
為了便於理解以byte資料型別作為例子。
127: 011
1111
1~127:100
0000
0即~127的值為-128;
同理,~-128的值為127;
(在數字層面的表現為:取相反數後減一)
二進位制數向左移一位,空缺填0;
特別注意 左移是有符號的,如果左移後符號位變化,會導致資料型別的改變。
例如:byte型別的127左移一位後會變為int型別的254;
24: 000
1100
024<<1:001
1000
0即24<<1的值為48;
特別的 對於127左移這種情況:
127: 011
1111
1127<<1:0
0…0111
1111
0即127<<1的值為254;
同理,-128<<1的值為-256;
二進位制數向右移一位,空缺填符號位數字;
24: 000
1100
024>>1:000
0110
0即24>>1的值為12;
同理,-24>>1的值為-12;
C 運算子過載需要注意的地方
有時候自己寫乙個類,需要過載運算子,但對於一些操作符 如 等 可以在類裡寫,也可以在類外寫。那麼 c 編譯器會去怎麼呼叫呢?首先,我們知道,過載 機制可以允許多個函式有相同的函式名,但引數列表必須不同。c 編譯器經過名字改編 name mangling 可以在呼叫時依據所傳實參找到 最符合 的函式實...
過載及運算子過載需要注意的地方
運算子過載 operator overload 是c 的乙個重要的新特性,它使得程式設計師把c 運算子定義擴充套件到運算元是物件的情況.運算子過載的目的是使c 程式更加直觀,更易懂.但這種方便有時候也帶來一些潛在的危險 運算子過載和普通的過載一樣 作用域相同,函式名字相同,但引數不同 引數個數,引數...
使用 strpos 需要注意 運算子
首先應該知道 strpos 函式可能返回布林值 false,但也可能返回乙個與 false 等值的非布林值,例如 0 或者 我們應使用 運算子來測試本函式的返回值。判斷字串是否存在的函式 function strexists haystack,needle test mystring abc fin...