close
            
        
            在C/C++中,~運算子的功能是求1的補數,也就是位元倒數
現在來看看32bit的整數是怎麼表現的
反轉0
二進位                                                      十進位
00000000000000000000000000000000         0             反轉前
11111111111111111111111111111111         -1            反轉後
反轉1
二進位                                                      十進位
00000000000000000000000000000001         1             反轉前
11111111111111111111111111111110         -2            反轉後
比較一下可以發現反轉前和反轉後絕對值相差1
利用這個特性
可以在有+1或是-1的情況下用~運算子替代
(i+1) / n  ----> -~i/n
(i-1) / n   ----> ~-i/n
當希望變數加1時,就先反轉位元再取負號
當希望變數減1時,就先取負號再反轉位元
雖然還有++和--的方式可以遞增遞減,但這會影響變數的內容,如果不希望變更變數內容可以這麼寫
全站熱搜
         
         留言列表
 留言列表 
             
 
 程式研究 (8)
 程式研究 (8)


