課程
/后端開發(fā)
/C++
/趣味 C++ 進階
a的二進制是101,那么取反應(yīng)該是010,十進制為2,為什么c輸出的值為-6呢?
2024-09-25
源自:趣味 C++ 進階 2-3
正在回答
在C++中,整數(shù)(如int類型)通常使用補碼表示法來存儲負數(shù)。對于正數(shù)5,其二進制表示為00000101(假設(shè)這是一個8位的整數(shù))。當你對這個數(shù)取反(即按位取反),得到的是11111010。
int
00000101
11111010
但是,由于計算機使用補碼表示法,這個結(jié)果實際上代表的是-6。這是因為:
00000110
11111001
因此,11111010在補碼表示法中代表的是-6,而不是2。
在這個例子中,代碼本身沒有錯誤,因為它正確地展示了取反操作的結(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é)果。
c
舉報
本課程是 C++ 的進階課程,繼續(xù)趣味學(xué)習(xí)之旅,帶你探索 C++ 的高級用法。
3 回答C++類成員函數(shù)的默認值
2 回答最后結(jié)果不是應(yīng)該23嗎為什么答案是21 屬實沒想明白
1 回答為什么要強制轉(zhuǎn)化成char*而不是int*
1 回答老師最后限制函數(shù)返回值什么的講的云里霧里的
1 回答為什么一定要把指針定義為父類不直接定義為子類?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2024-11-05
核心問題解答
在C++中,整數(shù)(如
int
類型)通常使用補碼表示法來存儲負數(shù)。對于正數(shù)5,其二進制表示為00000101
(假設(shè)這是一個8位的整數(shù))。當你對這個數(shù)取反(即按位取反),得到的是11111010
。但是,由于計算機使用補碼表示法,這個結(jié)果實際上代表的是-6。這是因為:
00000110
。11111001
。11111010
。因此,
11111010
在補碼表示法中代表的是-6,而不是2。修復(fù)后的代碼
在這個例子中,代碼本身沒有錯誤,因為它正確地展示了取反操作的結(jié)果。如果你希望看到取反后的二進制表示,可以修改代碼如下:
這段代碼會輸出
c
的二進制表示,幫助你更好地理解取反操作的結(jié)果。