回答編集履歴
2
文言修正
test
CHANGED
@@ -2,13 +2,15 @@
|
|
2
2
|
|
3
3
|
int (System.Int32) は 32bit の符号付整数だからです。
|
4
4
|
|
5
|
-
2進数で表すと
|
5
|
+
0を2進数で表すと
|
6
6
|
|
7
|
-
0000 0000 0000 0000 0000 0000 0000 0000
|
7
|
+
0000 0000 0000 0000 0000 0000 0000 0000
|
8
8
|
|
9
9
|
これをビット反転すると
|
10
10
|
|
11
|
-
1111 1111 1111 1111 1111 1111 1111 1111
|
11
|
+
1111 1111 1111 1111 1111 1111 1111 1111
|
12
|
+
|
13
|
+
となり、10進では -1 になります。
|
12
14
|
|
13
15
|
■ 1と表示する方法
|
14
16
|
|
1
エラーチェックをコンストラクタに
test
CHANGED
@@ -28,7 +28,14 @@
|
|
28
28
|
int value = 0;
|
29
29
|
|
30
30
|
private BIT(int value) {
|
31
|
+
switch (value) {
|
32
|
+
case 0:
|
33
|
+
case 1:
|
31
|
-
this.value = value;
|
34
|
+
this.value = value;
|
35
|
+
break;
|
36
|
+
default:
|
37
|
+
throw new ArgumentOutOfRangeException();
|
38
|
+
}
|
32
39
|
}
|
33
40
|
|
34
41
|
public override bool Equals(object obj) {
|
@@ -44,12 +51,7 @@
|
|
44
51
|
}
|
45
52
|
|
46
53
|
public static implicit operator BIT(int value) {
|
47
|
-
switch(value) {
|
48
|
-
case 0:
|
49
|
-
case 1:
|
50
|
-
|
54
|
+
return new BIT(value);
|
51
|
-
}
|
52
|
-
throw new ArgumentOutOfRangeException();
|
53
55
|
}
|
54
56
|
|
55
57
|
public static BIT operator ! (BIT value) {
|