題目連結:
給定兩正整數 a 、 b (a 、 b < 2 ^ 64) ,求 a ~ b 之間(含 a 、 b )所有數字進行 and 之後的結果為何?
觀察以下例子(數字皆以二進位表示):
101101
000000
兩數之間的所有數字作 and 運算後結果為 000000
101101
100000
所有數字 and 的結果為 100000
101101
110000
數字們 and 後的結果為 100000
由上面的例子我們可以看到,要從最左邊的位元開始往低位看。
兩者位元皆為 0 的位置略過;
當碰到兩者相同位置的位元皆為 1 時,則可知這個位元在從 a 數到 b 時皆不變,因此該位置的1 會在答案裡;
但是遇到其中一者為 1 ,另一者為 0 時,代表從 a 數到 b 此位元會變化,也就代表其後的位元皆會變化,因此從這個位元開始皆不需判斷。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。