1. 程式人生 > >關於原碼、反碼和補碼與二進位制左移的問題

關於原碼、反碼和補碼與二進位制左移的問題

2018.4.18

在今天的演算法學習過程中,關於求一個數的二進位制中1的個數(負數用補碼錶示),需要注意一個原數是真值,碼是二進位制的值,不存在正負號,正數的反碼補碼與原碼一致,負數的反碼是在原碼的基礎上除符號位全部取反,補碼是在反碼的基礎上再最後一位加1,例如:-10   原碼是 10001010   反碼是  11110101  補碼是 11110110


2018.4.19

同樣是昨天的演算法,關注點是邏輯與(&&)和按位與(&)的區別:  https://www.cnblogs.com/zwffff/archive/2011/03/31/2000715.html 

主要是兩點:其一是進行按位與的時候會把數全部轉換為二進位制然後進行按位操作,對於邏輯與會全部把數轉換為boolean值然後進行操作;其二是邏輯與(&&)按照順序逐個判斷運算元,如出現不為真的情況則後面的不在進行判斷,按位與則會對所有運算元進行判斷,不會因一個運算元的真假與否從而停止判斷。

左移一位乘2,左移兩位乘4   flag<<1