ガジェット通信

見たことのないものを見に行こう

【選択式問題】2進数パズル【言語不問】問題解説

DATE:
  • ガジェット通信を≫

2進数パズル

本問題は、2進数の計算をおこない、また、いくつかの進数を頭の中で変換するという内容でした

それでは以下、各問題とその解答を見ていきましょう。

問題のオープニング

あなたは、2進数の女神「バイナ=リー」の神殿にやって来ました。

この神殿では、女神の出す問題に正解すれば富を約束され、間違うと死を約束されます。

あなたは、歴戦のプログラマーとして、女神をギャフンと言わせなければなりません。

この神殿では、以下のような式が提示されます。数字は2進数の数値で、?の位置には演算子が入ります。

0001
?0011
?0111
?1111

最初に1段目と2段目を計算して、その結果と3段目を計算して……というように、上から順に計算していきます。最終的な計算結果として正しい値を、選択肢から選んで下さい。

問題1

// 問題
0011
+1100

// 演算子の意味
+ … 加算演算子

// 選択肢
10進数で 15
2進数で 0100
16進数で a

問題の式は、加算演算子で値を足しています。そのため、1行目の値と2行目の値を素直に足せば、答えが求まります。『0011』は10進数で「3」、『1100』は10進数で「12」。その合計は「15」になります。

次に選択肢の方は、以下のようになります。

1つ目は『10進数で 15』。
2つ目は『2進数で 0100』、なので10進数で「4」。
3つ目は『16進数で a』、なので10進数で「10」。

そのため答えは、1番目の選択肢の『10進数で 15』になります。

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード
console.log(“問題:”, parseInt(“0011″,2) + parseInt(“1100″,2));

console.log(“選択肢1:”, 15);
console.log(“選択肢2:”, parseInt(“0100″,2));
console.log(“選択肢3:”, parseInt(“a”,16));

// 出力結果
問題: 15
選択肢1: 15
選択肢2: 4
選択肢3: 10

問題2

// 問題
1110
-0111

// 演算子の意味
– … 減算演算子

// 選択肢
10進数で 6
2進数で 0111
8進数で 10

問題の式は、減算演算子で値を引いています。そのため、1行目の値から2行目の値を引けば、答えが求まります。『1110』は10進数で「14」、『0111』は10進数で「7」。その差は「7」になります。

次に選択肢の方は、以下のようになります。

1つ目は『10進数で 6』。
2つ目は『2進数で 0111』、なので10進数で「7」。
3つ目は『8進数で 10』、なので10進数で「8」。

そのため答えは、2番目の選択肢の『2進数で 0111』(10進数で7)になります。

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード
console.log(“問題:”, parseInt(“1110″,2) – parseInt(“0111″,2));

console.log(“選択肢1:”, 6);
console.log(“選択肢2:”, parseInt(“0111″,2));
console.log(“選択肢3:”, parseInt(“10″,8));

// 出力結果
問題: 7
選択肢1: 6
選択肢2: 7
選択肢3: 8

問題3

// 問題
0111
&1110
|1010

// 演算子の意味
& … AND演算子
| … OR演算子

// 選択肢
10進数で 14
2進数で 0111
8進数で 17

問題の式は、まず&演算子でアンド演算しています。アンド演算は、2つの値の同じ位置にあるビットが互いに1の場合のみ1になります。そのため、以下のような計算結果になります。

// 問題
0111
&1110
—–
0110

次に、上記の結果と3行目を、|演算子でオア演算しています。オア演算は、2つの値の同じ位置にあるビットが、どちらか1の場合に1になります。そのため、以下のような計算結果になります。

// 問題
0110
|1010
—–
1110

『1110』は10進数で「14」になります。

次に選択肢の方は、以下のようになります。

1つ目は『10進数で 14』。
2つ目は『2進数で 0111』、なので10進数で「7」。
3つ目は『8進数で 17』、なので10進数で「15」。

そのため答えは、1番目の選択肢の『10進数で 14』になります。

以下、ブラウザのコンソールで確認できるように、JavaScriptのコードを示します。

// 参考コード
console.log(“問題:”, (parseInt(“0111″,2) & parseInt(“1110″,2)) | parseInt(“1010″,2));

console.log(“選択肢1:”, 14);
console.log(“選択肢2:”, parseInt(“0111″,2));
console.log(“選択肢3:”, parseInt(“17″,8));

// 出力結果
問題: 14
選択肢1: 14
選択肢2: 7
選択肢3: 15

CodeIQ運営事務局より

柳井さん、ありがとうございました!
現在、柳井さんの最新問題が出題中です。
ぜひ挑戦してみてくださいね!

カテゴリー : デジタル・IT タグ :
CodeIQ MAGAZINEの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

TOP