2 回答

TA貢獻1816條經驗 獲得超6個贊
注釋最好表達為“獲取最低有效位集”。要了解發生了什么,您需要檢查負數如何用二進制表示。該技術稱為二進制補碼,從數字的正表示開始工作;您對每個位進行補碼(即 1 -> 0 和 0 -> 1)。然后將這個數字加 1。在 12 的例子中:
00001100 12
11110011 complement
00000001 binary 1
11110100 add to complement to form twos complement negative
如果您現在將原始值與負值相加,您將得到
00000100
其中唯一的位集對應于原始模式中的最低有效位集。

TA貢獻1788條經驗 獲得超4個贊
正如評論所說,diff & -diff返回在 diff 上設置的最后一位的值。例如:
diff = 14
.... = 1110 (binary)
.... ^ last set bit
.... 10 is the last set bit
.... 10 in decimal is 2
另一個例子
diff = 24
.... = 11000 (binary)
.... ^ last set bit
.... 1000 is the last set bit
.... 1000 in decimal is 8
我建議閱讀有關如何提出精心設計的問題的指南。我個人可以給出的一項建議是在您的問題末尾加上一句話,準確概括您想知道的內容。
添加回答
舉報