-1
int main()
{
       int a=1,b;
       b=~1;
       printf(""%d",b);
       return 0;
}

plsは、理解するのに役立つビット単位の操作を示すことによって説明します...

前もって感謝します.......

4

3 に答える 3

8

それはまさにあなたが想像できるものです。 1000000012 進数です (桁数はintプラットフォームのサイズによって異なります)。 ~1ビット単位の反転を実行し111111110ます。2の補数(バイナリ演算の最も一般的なシステム) では、これは に等しくなり-2ます。

于 2011-02-12T19:09:00.120 に答える
3

この ID は、次の動作を思い出すのに役立ちます~

~x == -x - 1

1に適用する:

~1 == -1 - 1
   == -2

ビット単位:

 1 == ...0000000001
~1 == ...1111111110  # flip the bits

 0 == ...0000000000
-1 == ...1111111111  # two's complement representation for negative numbers
-2 == ...1111111110
于 2011-02-12T19:10:04.013 に答える
0

何が起こっているかは次のとおりです。

 1:  00000001
~1:  11111110

符号付き整数で考えてみると、 0: 00000000 -1 -1: 11111111 -2: 11111110

基本的に、ゼロから始めて 2 を引いて、何が得られるかを確認します。

于 2011-02-12T19:10:05.507 に答える