位運算子 需要注意的地方

2021-09-09 06:20:36 字數 851 閱讀 5089

本人第乙個部落格,以後會經常寫(此時的我就像戲台上的老將軍),以免第二次犯同樣的錯誤。因為考研的原因,好久沒有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...