3.Q 4bit(★★☆)
問題
入力からの整数値を受け取り、4桁の2進数で表記しよう。
2進数表記の各桁の値を求めるときには、/や%などの演算をうまく使えないか考えてみよう。
入出力例
例1
入力
Input
7出力
Output
0111例2
入力
Input
9出力
Output
1001例3
入力
Input
13出力
Output
1101ヒント
ヒント1
int型では、商は小数点以下が切り捨てられる。例えば、5 / 3は1になる。
ヒント2
1桁ずつ0か1かを求めることを考えよう。
一番右の桁はどのように求められるだろうか?
ヒント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;
}