第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

a為5,為什么取反后c的值不是2呢?

a的二進制是101,那么取反應(yīng)該是010,十進制為2,為什么c輸出的值為-6呢?

https://img1.sycdn.imooc.com/66f3f8f00001b5e809480631.jpg

正在回答

1 回答

核心問題解答

在C++中,整數(shù)(如int類型)通常使用補碼表示法來存儲負數(shù)。對于正數(shù)5,其二進制表示為00000101(假設(shè)這是一個8位的整數(shù))。當你對這個數(shù)取反(即按位取反),得到的是11111010。

但是,由于計算機使用補碼表示法,這個結(jié)果實際上代表的是-6。這是因為:

  1. 首先,找到6的補碼表示。6的二進制表示為00000110
  2. 然后,將6的二進制表示取反,得到11111001
  3. 最后,將取反的結(jié)果加1,得到11111010。

因此,11111010在補碼表示法中代表的是-6,而不是2。

修復(fù)后的代碼

在這個例子中,代碼本身沒有錯誤,因為它正確地展示了取反操作的結(jié)果。如果你希望看到取反后的二進制表示,可以修改代碼如下:

#include?<stdio.h>
#include?<bitset>

int?main(int?argc,?char?**argv)
{
????int?a?=?5;
????int?c;
????printf("a的值為:%d\n",?a);
????c?=?~a;
????printf("c的值為:%d\n",?c);
????std::bitset<8>?binary_c(c);
????printf("c的二進制表示為:%s\n",?binary_c.to_string().c_str());
????return?0;
}

這段代碼會輸出c的二進制表示,幫助你更好地理解取反操作的結(jié)果。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

a為5,為什么取反后c的值不是2呢?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號