//這個函式返回引數值中值為1的位的個數
intcount_one_bits(unsigned value)
}}
(1)這裡我們先假設value的值為 0001 0000;
(2)那麼value&1不為0,則ones加1;
(3) 然後value右移1位;即0000 1000;此時value&1;任然不為0,ones加1;
如此迴圈下去;最終獲取value中bit為1的個數。
《左移 >>右移
可以這麼記。比如書名號是《》這樣的,書名號的左邊《就是左移,書名號的右邊》就是右移。
左移就是值得最後bit位依次補0,而右移就是值得最前bit位依次補0.
& | ^
a = 0010 1110,
b = 0101 1011,
(1) a&b = 0000 1010; 如果兩位都為1,則為1;否則為0
0010 1110
0101 1011
0000 1010
(2) a|b = 0111 1111;如果兩位都為0,則為0;否則為1
0010 1110
0101 1011
0111 1111
(3) a^b = 0111 0101;如果兩位不同,結果為1,否則為0
0010 1110
0101 1011
0111 0101
0000 1010
(4)把指定位的bit設定為1
value|=1<(5)把指定位的bit設定為0
value&=~(1<(6)判斷指定bit位是否為1
value&1《在運算元之前的操作符在變數值使用之前增加它的值;
在運算元之後的操作符在變數使用之後增加它的值。
只能低位向高位轉,
不能高位向低位轉
比如 int轉char;由於char只佔1byte;而int佔4個byte,那麼強轉後,int值必須丟棄3byte的值,轉成char型時,結構已經不對,裁剪了。
C和指標 第五章 操作符合表示式
01 a x y 3 不能說a和x都被賦值y 3,因為如果x是乙個字元型變數,那麼y 3的值就會被擷取片段,以便於容納於字元型別的變數,a就會被賦予被擷取後的值。操作符 間接訪問操作符 sizeof操作符判斷運算元的字元長度,以位元組為單位,sizeof 陣列 返回陣列的長度,以位元組為單位。b a...
第五章 表示式
表示式這章比較簡單,一般有過c的基礎的人都應該問題不大,要知道連我都覺得比較簡單,相信你們肯定更加容易了。new和delete表示式 動態建立和釋放陣列,定義變數時,必須指定其資料型別和名字。然而動態建立物件時,只需要指定其資料型別,而不必為該物件命名。取而代之的是,new表示式返回值指向新建立物件...
C primer 第五章 表示式
1 和 均是 2和除以2.2 為什麼建議多使用前自增?因為前置操作需要做的工作更少,只需要加1返回結果就行。而後置操作則需要先儲存運算元原來的值,以便返回未加1之前的操作結果。對於int型物件和指標,編譯器可以優化掉這項額外工作。但是對於更多的複雜迭代器型別,這種額外的工作可能花費更大的代價。3 s...