回答編集履歴
1
訂正
answer
CHANGED
@@ -1,16 +1,23 @@
|
|
1
|
-
|
1
|
+
あ。算術シフトを避ける為ですね……
|
2
2
|
|
3
|
+
|
4
|
+
~~
|
5
|
+
ビット演算は符号の有無は無視して、そのまま桁ごとに演算がされます。~~
|
6
|
+
~~
|
3
7
|
たとえば、
|
4
8
|
`int x = 0; //00000000`
|
5
9
|
をnotで反転
|
6
10
|
`~x`の値は`11111111 = -1`
|
7
11
|
になります。
|
8
12
|
同様に、`1`を反転すると`-2`になります。
|
9
|
-
|
13
|
+
~~
|
14
|
+
~~
|
10
15
|
符号があるのに無視されることでおかしな事になるので、unsignedで初めから符号はなかったものとして扱います。
|
11
|
-
|
16
|
+
~~
|
17
|
+
~~
|
12
18
|
`unsigned int x=0;`
|
13
19
|
をnotで反転
|
14
20
|
`~x`の値は`11111111 = 255`
|
15
21
|
になります。
|
16
|
-
同様に、`1`を反転すると`254`になります。
|
22
|
+
同様に、`1`を反転すると`254`になります。
|
23
|
+
~~
|