我正在寫一個程序,它將位置3,4和5上的位的值與給定的32位無符號整數的位置24,25和26上的位進行交換。爲什麼「number&(〜(1 << 3))」不適用於0?
因此,可以說我用的是15號,我想將第4位爲0,我會使用...
int number = 15
int newnumber = number & (~(1 << 3));
// output is 7
這是有道理的,因爲我交換從第4位1到0,所以15(1111)變成7(0111)。
然而,這不會工作其他方式(將0更改爲1),現在我知道如何實現通過不同的方法交換0到1,但我真的想了解此方法中的代碼。
那麼,爲什麼不工作?
僅當兩個輸入都是1時,按位AND的結果爲1,因此0 AND _something_不能成爲1。 – Michael