亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 &= -a 中使用 Java 會發生什么

在 &= -a 中使用 Java 會發生什么

慕標琳琳 2021-11-17 15:43:57
我看到這個評論,但不明白它。獲取它的最后一個設置位diff &= -diff;我試過int a = 3 & -3; it returns 1.int a = 2 & -2; it returns 2.int a = 4 & -4; it returns 4.int a = 5 & -5; it returns 1.
查看完整描述

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 

其中唯一的位集對應于原始模式中的最低有效位集。


查看完整回答
反對 回復 2021-11-17
?
尚方寶劍之說

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

我建議閱讀有關如何提出精心設計的問題的指南。我個人可以給出的一項建議是在您的問題末尾加上一句話,準確概括您想知道的內容。


查看完整回答
反對 回復 2021-11-17
  • 2 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號