回答編集履歴
2
回答を追加
test
CHANGED
@@ -51,3 +51,29 @@
|
|
51
51
|
`00001001000`
|
52
52
|
|
53
53
|
であり, この`00001001000`は10進数表記で`72`というわけです.
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
---
|
58
|
+
|
59
|
+
> ビット演算子は演算対象が2進数でない場合は、まず2進数に値が変換されてから行われる。ビット演算子の結果は10進数の値で返る
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
違います.
|
64
|
+
|
65
|
+
|
66
|
+
|
67
|
+
「整数型の**文字列表現**として2進・8進・10進・16進がある」のです. ソースコード上で数値を**表現**する際に何らかの文字列で値を表さなければならないので, このようなルールがあるのです. これは計算結果をコンソールに文字列として表示する際にも必要となるため, 通常は(直感的に判りやすい)10進表記が用いられているのです.
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
もちろん2進数や8進数表記が便利な場合もありますから, それらをサポートする関数があります.
|
72
|
+
|
73
|
+
- `parseInt([数値文字列], [基数])`
|
74
|
+
|
75
|
+
- `Integer.toString([基数])`
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
ビット演算子は整数型を「2進数として考え, その桁ごとに計算を行う」もので, 出力結果が2進数というわけではありません.
|
1
説明を追加
test
CHANGED
@@ -7,3 +7,47 @@
|
|
7
7
|
|
8
8
|
|
9
9
|
JavaScriptにおける数値リテラル, ビット演算子の記法から確認して下さい.
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
---
|
14
|
+
|
15
|
+
と, 解説もないのはアレなので
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
---
|
20
|
+
|
21
|
+
JavaScriptにおける整数リテラルの記述には基数(n進数)指定にルールがあり,
|
22
|
+
|
23
|
+
- 0以外の数字から始まる→10進数
|
24
|
+
|
25
|
+
- 0から始まるもしくは0oから始まる→は8進数
|
26
|
+
|
27
|
+
- 0xから始まる→16進数
|
28
|
+
|
29
|
+
- 0bから始まる→2進数
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
と解釈されます.
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
さて式`1100 & 0111`の計算結果が`72`となる理由ですが
|
38
|
+
|
39
|
+
- `1100`は10進数なのでこれを2進数で表すと`10001001100`
|
40
|
+
|
41
|
+
- `0111`は**8進数**なのでこれを2進数で表すと`1001001`
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
となるため,
|
46
|
+
|
47
|
+
`10001001100` &
|
48
|
+
|
49
|
+
`00001001001` =
|
50
|
+
|
51
|
+
`00001001000`
|
52
|
+
|
53
|
+
であり, この`00001001000`は10進数表記で`72`というわけです.
|