Skip to content

3. 変数と入出力

3.Q 4bit(★★☆)

問題

入力からの整数値を受け取り、4桁の2進数で表記しよう。

2進数表記の各桁の値を求めるときには、/%などの演算をうまく使えないか考えてみよう。

入出力例

例1

入力

Input
7

出力

Output
0111

例2

入力

Input
9

出力

Output
1001

例3

入力

Input
13

出力

Output
1101

ヒント

ヒント1

int型では、商は小数点以下が切り捨てられる。例えば、5 / 31になる。

ヒント2

1桁ずつ01かを求めることを考えよう。

一番右の桁はどのように求められるだろうか?

ヒント3

入力をnとすると、一番右の桁はn % 2で求めることができる。

ヒント4

を2進数表記すると、の2進数表記の桁目以上を得ることができる。

例えば、2進数表記で1101という数を2で割った商は、2進数表記で110になる。2進数表記で1101という数を4で割った商は、2進数表記で11になる。

では、右から2桁目はどのような計算で求められるだろうか?

ヒント5

入力をnとすると、右から2桁目は(n / 2) % 2で求めることができる。

では、右から3桁目はどのような計算で求められるだろうか?

ヒント6

入力をnとすると、右から3桁目は(n / 4) % 2で求めることができる。

では、右から4桁目はどのような計算で求められるだろうか?

ヒント7

入力をnとすると、右から4桁目は(n / 8) % 2で求めることができる。

ここまでのヒントの内容をプログラムとして書いてみよう。

解答例

解答例
cpp
#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;  // 入力を受け取る
    cout << (n / 8) % 2;  // 右から4桁目
    cout << (n / 4) % 2;  // 右から3桁目
    cout << (n / 2) % 2;  // 右から2桁目
    cout << n % 2;  // 右から1桁目
    cout << endl;
}