搜尋

首頁  >  問答  >  主體

c++ - 位运算的问题

#include <iostream>

using namespace std;

int main()
{
    cout << (0b11 & (~0)) << endl;
    getchar();
    return 0;
}

为什么上面这个代码输出结果是3?就是想问为什么~0可以得到全是1的掩码,为什么不是只有一个1,像这样0000000000000000000001。

PHPzPHPz2806 天前552

全部回覆(4)我來回復

  • 大家讲道理

    大家讲道理2017-04-17 14:59:15

    假設你的環境是32位,int為4位元組。 0等價於00000000 00000000 00000000 00000000,'~'按位取反,得到11111111 11111111 11111111 11111111
    另外0b11是什麼,這種寫法好像沒見過?

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:59:15

    因為~就是按位取反。全是0每個都取反就都是1

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 14:59:15

    既然0b11是二進制數,那麼答案就很明顯了。 ~0的結果是1,0b11和1進行與運算,結果不變,因此結果是0b11的十進位結果3。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 14:59:15

    0b11其實是binary literal。
    但這個是gcc extension,vc++的話 2015 Preview 才可以用。

    回覆
    0
  • 取消回覆