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

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

位補運算符(~tilde)是如何工作的?

位補運算符(~tilde)是如何工作的?

位補運算符(~tilde)是如何工作的?為什么~2等于-3?如何~接線員?
查看完整描述

3 回答

?
慕神8447489

TA貢獻1780條經驗 獲得超1個贊

請記住,負數存儲為二補積極的對口。舉個例子,這里是-2在兩個補語中的表示:(8位)

1111 1110

得到它的方法是,獲取一個數字的二進制表示,取其補碼(反轉所有位)并添加一個。兩個開始為0000 0010,通過倒置位,我們得到11111101。加一個就可以得到上面的結果。第一個位是符號位,意味著否定。

讓我們來看看我們如何得到~2=-3:

這里又有兩個:

0000 0010

只要翻轉所有的數據,我們就可以得到:

1111 1101

好吧,在二人的補體里-3是什么樣子的?從正3:0000 0011開始,將所有位翻轉到11111100,并添加一個變成負值(-3),11111101。

所以,如果你簡單地把比特倒置到2中,你就得到了兩個補碼的-3表示。

補運算符(~)只是翻轉位。由機器來解釋這些位元。


查看完整回答
反對 回復 2019-07-16
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

~翻轉值中的位。

為什么~2-3與數字按位表示的方式有關。數字表示為二補.

所以,2是二進制值。

00000010

而~2翻轉比特,所以現在的值是:

11111101

它是-3的二進制表示。


查看完整回答
反對 回復 2019-07-16
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

正如其他人提到的~只需翻轉位(將1改為0和0到1)二補你得到了你看到的結果。

有一點要補充的是為什么使用2的補碼,這樣負數上的運算和正數上的運算是一樣的。想想-3作為3應該添加以獲得零,您將看到這個數字是1101記住,二進制加法就像小學(十進制)加法,只有當你到2而不是10的時候才帶一個。

 1101 +
 0011 // 3
    =
10000
    =
 0000 // lose carry bit because integers have a constant number of bits.

因此1101-3,翻轉你得到的部分0010也就是兩個。


查看完整回答
反對 回復 2019-07-16
  • 3 回答
  • 0 關注
  • 564 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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